什么时候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 ...