systemd를 사용하여 사용자 로그아웃

systemd를 사용하여 사용자 로그아웃

나는 systemd 서비스 유닛을 사용하여 창 관리자를 시작합니다(다음과 같이)이 튜토리얼). 로그인한 후 tty1다음 명령을 실행합니다 .zlogin(ZSH를 로그인 셸로 사용하고 있습니다).

if [[ -z "$DISPLAY" && $(tty) = /dev/tty1 ]]; then
  nohup systemd --user > ~/.xlog 2>&1 &
  disown %2
  logout
fi

Systemd는 서비스 유닛을 통해 X 서버, 창 관리자를 시작합니다.

문제는 로그아웃하려고 할 때 시작됩니다.
단순히 kill $MANAGERPIDsystemd 데몬을 종료하기 위해 실행해야 합니까?
실행하는 것이 더 깔끔해 보이지만 loginctl terminate-session $XDG_SESSION_ID이 명령에는 더 많은 권한이 필요합니다.

문제는 위 설정을 사용하여 로그아웃하는 데 선호되는 방법은 무엇입니까?

답변1

이것은 xmonad에서 로그아웃하는 데 사용하는 방법입니다( wmctrl열린 창을 모두 닫은 후).

session=`loginctl session-status | head -n 1 | awk '{print $1}'`
loginctl terminate-session $session

왜 더 많은 권한이 필요한지 모르겠습니다 loginctl terminate-session. 제 생각에는 그런 것이 필요하지 않은 것 같습니다.

또한 세션 ID를 얻는 방법에는 여러 가지가 있습니다. 이 예에서는 loginctl그 자체에서 직접 가져옵니다. 그리고 $XDG_SESSION_ID(당신이 쓴 대로) 그리고 /proc/self/sessionid.

관련 정보