如何找出谁在使用物理控制台?

如何找出谁在使用物理控制台?

我想使用脚本来找出当前正在使用的用户名物理控制台(谁负责控制键盘、鼠标和图形显示)?

我不只是想知道谁运行 X(因为当前控制台可以切换到另一个终端和另一个用户)。


澄清:
w等 命令who显示谁登录在哪个终端。这很简单。但是我想知道谁当前拥有物理控制台(显示器、键盘等)。例如,如果两个用户运行显示器 :0 和 :1,并且我可以使用ctrl+ alt+7ctrl+ alt+在显示器之间切换8,我想知道哪个用户当前拥有其显示器和实际物理屏幕之间的连接。


再澄清一点:
我不想知道我自己的用户名。我有一个脚本,以另一个用户或 root 身份运行,需要知道谁使用了身体的显示。不同的用户可以运行多个 X 会话,其中一些是虚拟化的,一些是连接到远程 X 服务器的,但我只对实际在监视器上显示输出的会话感兴趣。


另外需要澄清的是:
无论命令是什么,按下 ++(切换到另一个虚拟控制台)后,输出必须Ctrl有所不同AltF1

答案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

显示当前登录的用户名

相关内容