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 を取得する方法は複数あることにも注意してください。この例では、単にセッション ID 自体から直接取得しています。また、(あなたが書いたように)loginctlおよび もあります。$XDG_SESSION_ID/proc/self/sessionid

関連情報