Benutzer mit systemd abmelden

Benutzer mit systemd abmelden

Ich starte meinen Fenstermanager mit systemd service units (nachdieses Tutorial). Nachdem ich mich angemeldet habe, tty1wird Folgendes ausgeführt .zlogin(ich verwende ZSH als Login-Shell):

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

Systemd startet einen X-Server, einen Fenstermanager usw. über Serviceeinheiten.

Das Problem beginnt, wenn ich mich abmelden möchte.
Soll ich einfach ausführen, kill $MANAGERPIDum den Systemd-Daemon zu beenden?
Es erscheint viel sauberer, Folgendes auszuführen, loginctl terminate-session $XDG_SESSION_IDaber dieser Befehl erfordert weitere Berechtigungen.

Hier ist die Frage: Was ist die bevorzugte Methode zum Abmelden bei dem oben beschriebenen Setup?

Antwort1

Dies verwende ich, um mich von xmonad abzumelden (nachdem ich wmctrlalle offenen Fenster geschlossen habe):

session=`loginctl session-status | head -n 1 | awk '{print $1}'`
loginctl terminate-session $session

Ich bin nicht sicher, warum Sie dafür weitere Berechtigungen benötigen loginctl terminate-session– bei mir funktioniert es ohne solche Anforderungen.

Beachten Sie auch, dass es verschiedene Möglichkeiten gibt, die Sitzungs-ID zu erhalten. In diesem Beispiel nehme ich sie einfach direkt von loginctlsich selbst. Es gibt auch $XDG_SESSION_ID(wie Sie geschrieben haben) und /proc/self/sessionid.

verwandte Informationen