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

相关内容