在X会话中,您始终可以查阅DISPLAY
环境变量来获取当前的显示编号(echo $DISPLAY
)。
找出其他人的显示编号比较困难。除了询问所有与他们连接的显示器的用户之外,我认为没有其他获取信息的标准方法,因此,任何获取此信息的尝试都需要某种黑客手段,并且不能在所有情况下都有效。
SE中其他地方提供了一些选项,但是例如,它们不适用于Debian Wheezy。但是,列出当前活动的显示很容易,如上面我链接的文章所示:
ps axu | grep "X "
将向您显示当前正在运行的X进程,如下所示:
root 2354 0.0 0.5 23380 18292 tty8 Ss+ Sep15 2:36 /usr/bin/X :1 vt8 -br -nolisten tcp -auth /var/run/xauth/A:1-7xlyuc
root 7901 0.0 0.3 17044 12072 tty7 Ss+ Sep14 5:58 /usr/bin/X :0 vt7 -br -nolisten tcp -auth /var/run/xauth/A:0-wckh0a
后面的第一个参数/usr/bin/X
是显示数字,以冒号作为前缀,下一个参数为您显示分配给会话的虚拟终端。
不过,您可以通过查看流程列表来获得答案:
ps axu |grep -3 "X "
root 1990 0.0 0.0 0 0 ? S Sep14 0:00 [kjournald]
root 1991 0.0 0.0 0 0 ? S Sep14 0:00 [kjournald]
root 1992 0.0 0.0 0 0 ? S Sep14 0:00 [kjournald]
root 2354 0.0 0.5 23380 18292 tty8 Ss+ Sep15 2:36 /usr/bin/X :1 vt8 -br -nolisten tcp -auth /var/run/xauth/A:1-7xlyuc
root 2359 0.0 0.0 5264 2228 ? S Sep15 0:00 -:1
user_1 2378 0.0 0.0 4920 1348 ? Ss Sep15 0:00 /bin/sh /usr/bin/startkde
user_1 2443 0.0 0.0 3868 348 ? Ss Sep15 0:00 /usr/bin/ssh-agent env TMPDIR=/var/tmp /usr/bin/dbus-launch --exit-with-session /usr/bin/openbox-kde-session
--
root 7500 0.0 0.0 6460 1080 ? Ss Sep14 0:00 /usr/sbin/sshd
ntp 7841 0.0 0.0 5352 1760 ? Ss Sep14 0:17 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 108:111
root 7882 0.0 0.0 3964 716 ? Ss Sep14 0:00 /usr/bin/kdm -config /var/run/kdm/kdmrc
root 7901 0.0 0.3 17044 12072 tty7 Ss+ Sep14 5:59 /usr/bin/X :0 vt7 -br -nolisten tcp -auth /var/run/xauth/A:0-wckh0a
root 7906 0.0 0.0 5260 2224 ? S Sep14 0:00 -:0
user_2 7925 0.0 0.0 12924 1560 ? Ssl Sep14 0:00 /usr/bin/lxsession -s LXDE -e LXDE
user_2 7990 0.0 0.0 3868 348 ? Ss Sep14 0:00 /usr/bin/ssh-agent env TMPDIR=/var/tmp /usr/bin/dbus-launch --exit-with-session /usr/bin/startlxde
看一下后面的几行/usr/bin/X
-当X会话启动时,通常会以该会话所属的用户身份启动窗口管理器,并在此处获得用户名。在我的情况下,user_1使用KDE,而user_2使用LXDE。但是,此解决方案仅基于以下事实:内核恰好按升序分配新的进程ID,而情况并非总是如此。
;
之前添加一个done
。