使用 systemd 注销用户

mmh*_*mmh 8 systemd logout

我使用 systemd 服务单元启动我的窗口管理器(遵循本教程)。在我登录后tty1执行以下操作.zlogin(我使用 ZSH 作为登录 shell):

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

Systemd 通过服务单元启动 X 服务器、窗口管理器等。

当我想注销时,问题就开始了。
我应该简单地执行kill $MANAGERPID杀死 systemd 守护进程吗?
执行 a 似乎更干净,loginctl terminate-session $XDG_SESSION_ID但此命令需要更多权限。

这里的问题是:使用上述设置注销的首选方式是什么?

小智 9

这是我用来退出使用 xmonad 的方法(wmctrl用于关闭所有打开的窗口后):

session=`loginctl session-status | head -n 1 | awk '{print $1}'`
loginctl terminate-session $session
Run Code Online (Sandbox Code Playgroud)

我不确定为什么你需要更多的权限loginctl terminate-session- 这对我来说没有任何这样的需要。

另请注意,有多种方法可以获取会话 ID。在这个例子中,我只是直接从loginctl它本身中取出它。还有$XDG_SESSION_ID(如您所写)和/proc/self/sessionid.

  • `loginctl 会话状态 | awk 'NR==1{print $1}'`... (2认同)