我想使用脚本来找出当前正在使用的用户名物理控制台(谁负责控制键盘、鼠标和图形显示)?
我不只是想知道谁运行 X(因为当前控制台可以切换到另一个终端和另一个用户)。
澄清:w
等 命令who
显示谁登录在哪个终端。这很简单。但是我想知道谁当前拥有物理控制台(显示器、键盘等)。例如,如果两个用户运行显示器 :0 和 :1,并且我可以使用ctrl+ alt+7和ctrl+ alt+在显示器之间切换8,我想知道哪个用户当前拥有其显示器和实际物理屏幕之间的连接。
再澄清一点:
我不想知道我自己的用户名。我有一个脚本,以另一个用户或 root 身份运行,需要知道谁使用了身体的显示。不同的用户可以运行多个 X 会话,其中一些是虚拟化的,一些是连接到远程 X 服务器的,但我只对实际在监视器上显示输出的会话感兴趣。
另外需要澄清的是:
无论命令是什么,按下 ++(切换到另一个虚拟控制台)后,输出必须Ctrl有所不同Alt。F1
答案1
恐怕我无法给您一个具体的答案(因为我不太了解这项技术),但我相信您可以使用 D-Bus 和 ConsoleKit 找到答案。
例如,当我从 X 切换到 VT 并切换回来时,我得到了这个监听dbus-monitor
:
$ dbus-monitor --system | grep ConsoleKit
signal sender=:1.16 -> dest=(null destination) serial=19039 path=/org/freedesktop/ConsoleKit/Session2; interface=org.freedesktop.ConsoleKit.Session; member=ActiveChanged
signal sender=:1.16 -> dest=(null destination) serial=19040 path=/org/freedesktop/ConsoleKit/Seat1; interface=org.freedesktop.ConsoleKit.Seat; member=ActiveSessionChanged
signal sender=:1.16 -> dest=(null destination) serial=19041 path=/org/freedesktop/ConsoleKit/Session2; interface=org.freedesktop.ConsoleKit.Session; member=ActiveChanged
signal sender=:1.16 -> dest=(null destination) serial=19042 path=/org/freedesktop/ConsoleKit/Seat1; interface=org.freedesktop.ConsoleKit.Seat; member=ActiveSessionChanged
string "/org/freedesktop/ConsoleKit/Session2"
具体来说,您可以使用获取活动会话方法。以下是使用dbus-send
(可能需要sudo
) 的方法:
$ dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Seat1 org.freedesktop.ConsoleKit.Seat.GetActiveSession
然后,根据您的应用程序,您需要检查返回对象的属性,该属性应该是指向会议。
答案2
[geek@atremis ~]$ w
20:02:02 up 2 days, 8:37, 3 users, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
geek tty1 :0 Thu11 2days 35.11s 0.18s pam: gdm-passwo
geek pts/0 athena Fri22 21:04m 0.03s 0.03s -bash
geek pts/1 blackbeauty 20:02 0.00s 0.14s 0.10s w
[geek@atremis ~]$
您可以使用 w 命令查看谁登录了。空闲时间和正在运行的内容应该会告诉您正在运行什么 - 在这种情况下,gdm 表示活动登录,空闲时间表示用户 2 天内没有使用过系统。与来自 blackbeauty 的登录相比,它的空闲时间为 0.00,这表明它当前正在使用中。
答案3
有很多方法:
whoami
w
echo $USER
logname
答案4
另一个命令是
whoami
显示当前登录的用户名