根据 PID 确定显示或 VNC 会话

根据 PID 确定显示或 VNC 会话

我经常通过 VNC 连接到运行许多并发计算密集型 matlab 进程的服务器。有时,我的某个进程出现问题,我可以从 top 看到,但我很难确定它在哪个 VNC 会话上运行,或者更具体地说,它在哪个显示器上运行。

假设我发现 PID 8536 占用大量资源,我想调查一下。因为这是一个 matlab 会话,我知道某个地方可能有一个 IDE 打开,我想在终止它之前检查一下是否发生了重要的事情。

过去,我们曾以一种有些尴尬的方式解决了这个问题,即确定从哪个 PTY 8536 启动,然后查看进程树以找出在该上下文中启动的内容,向上滚动并查看 VNC 初始化。

似乎一定有更好的方法来实现 PID -> X 显示(或 VNC 会话)。

答案1

在进程文件系统中有一个名为 environ 的文件,它应该包含为任何给定 PID 设置的环境变量,包括变量 VNCDESKTOP,它应该包含该进程父 VNC 会话的屏幕号。

这应该显示如下信息:

awk -v 'RS=\0' -F = '$1=="VNCDESKTOP" {print $2}' /proc/$PID/environ

相关内容