使用 systemd 登出用戶

使用 systemd 登出用戶

我使用 systemd 服務單元啟動視窗管理器(如下本教程)。登入後,tty1執行以下命令.zlogin(我使用 ZSH 作為登入 shell):

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

Systemd 透過服務單元啟動 X 伺服器、視窗管理器…。

當我想註銷時問題就開始了。
我應該簡單地執行kill $MANAGERPID來殺死 systemd 守護程式嗎?
執行 a 似乎更乾淨,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.

相關內容