
我使用 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
.