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.

관련 정보