如何确定loginctl中的图形tty

如何确定loginctl中的图形tty

Loginctl 列出了很多会话,我想以编程方式知道哪一个是图形会话(例如 GNOME 桌面)。

在下面的示例中,我打开了一个 GNome 桌面会话、一个 ssh 连接和一个文本会话 (getty)。

$ loginctl
SESSION  UID USER SEAT  TTY  
      3 1000 user seat0 tty2
    237 1000 user       pts/2
    260 1000 user seat0 tty3

3 sessions listed.
$ 

我可以猜测 tty2 是 GNome 会话,因为我可以使用 Ctrl+Alt+F2 切换到它。 tty3 是文本会话 (Ctrl+Alt+F3)。 pts/2 是剩余的 ssh 会话。然而,程序如何知道哪个是哪个呢?


注意:我不认为以下方法是解决方案,因为它们不严谨。用户可能可以打开一个新的 tty 并运行 /usr/libexec/gdm-x-session,这会欺骗我的程序

方法一:运行ps -aux | grep /usr/libexec/gdm-x-session,查看:

... tty2     Sl+  00:32   0:00 /usr/libexec/gdm-x-session

方法二:运行lsof /dev/tty2,查看:

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
gdm-x-ses 3271 user    0u   CHR    4,2      0t0   23 /dev/tty2
...

答案1

询问loginctl每个会话的类型:

loginctl show-session -p Type 3

这将显示Type=x11Type=wayland用于图形会话。

相关内容