确定是否有任何VNC显示桌面处于活动状态及其数量

确定是否有任何VNC显示桌面处于活动状态及其数量

什么时候SSH 日志记录进入我的 Linux 计算机,我怎么知道是否有 X-Windows 桌面展示会话(即:1 由 VNCServer 启动)处于活动状态,其编号是多少?

原因
我有时远程启动需要 GUI 的 iMacros FireFox 脚本,因此如果没有启动桌面,我必须通过发出以下命令来启动它:

vncserver -name Computer

如果它已启动,在知道其编号(即:1.0:)后我会:

export DISPLAY=:1.0
firefox imacros://run/?m=MyMacro.iim

我常常尝试:

$ sudo ps -e | grep "vnc" -i
 1685 ?        06:28:53 Xtightvnc

但这并没有给我带来数字(即:1.0:)。

根据要求提供更多数据(在 :1 上有一个正在运行的 VNC):

$ sudo netstat -lnp|grep -i vnc
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      1685/Xtightvnc
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      1685/Xtightvnc
unix  2      [ ACC ]     STREAM     LISTENING     11847    1685/Xtightvnc      /tmp/.X11-unix/X1

答案1

默认情况下,vnc 使用端口 5901 作为显示器 1,依此类推。因此,您可以使用 netstat 列出所有侦听进程并从中计算显示:

export DISPLAY="$(netstat -ln |
 awk '$4~/:59[0-9][0-9]$/{
  v=$4; sub(/.*:/,"",v);
  print ":" v-5900; exit}')"

假设您的 netstat 输出类似于0.0.0.0:5901字段 4 中的内容。awk 删除“:”之前的所有内容并从中减去 5900。 DISPLAY环境设置为以下firefox。如果您想将其与 vncserver 的启动结合起来,请将其放入一个函数中,例如 getdisplay,并按如下方式使用它:

getdisplay(){
  ... as above
}
getdisplay
if [ -z "$DISPLAY" ]
then    vncserver -name Computer
        getdisplay
fi
firefox ...

相关内容