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.
$
Ctrl+Alt+F2를 사용하여 tty2로 전환할 수 있기 때문에 tty2가 GNome 세션인 것으로 추측할 수 있습니다. tty3은 텍스트 세션입니다(Ctrl+Alt+F3). pts/2는 나머지 SSH 세션입니다. 그러나 프로그램은 어느 것이 어느 것인지 어떻게 알 수 있습니까?
참고: 다음 방법은 엄격하지 않기 때문에 해결책이 될 수 없다고 생각합니다. 사용자는 아마도 새 tty를 열고 /usr/libexec/gdm-x-session을 실행할 수 있으며, 이는 내 프로그램을 속일 것입니다.
방법 1: 실행 ps -aux | grep /usr/libexec/gdm-x-session
하고 보기:
... tty2 Sl+ 00:32 0:00 /usr/libexec/gdm-x-session
방법 2: 실행 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=x11
.Type=wayland