Ich habe also dieses Szenario: user-a
Es wird ein systemd-Benutzerdienst ausgeführt user-a-service
. Ich bin Root und möchte diesen Benutzerdienst neu starten. Ich kann keine Möglichkeit finden, dies zu tun. Im Grunde möchte ich Folgendes:
systemctl --user user-a restart user-a-service
Bitte beachten Sie, dass diesenichtein normaler Systemdienst, der mit einem bestimmten Nicht-Root-Benutzer, aber einem tatsächlichen Benutzerdienst ausgeführt wird.
Antwort1
Dies ist nur möglich, indem Sie es systemctl
als dieser Benutzer ausführen – und mit den entsprechenden Umgebungsvariablen, die es ihm ermöglichen, entweder den D-Bus-Benutzerbus oder den privaten Systemd-Socket zu finden:
sudo -u user-a XDG_RUNTIME_DIR="/run/user/$(id -u user-a)" systemctl --user restart user-a-service
Mit neueren systemd (v248) können Sie --machine
Loopback-Verbindungen durch Angabe des speziellen Hostnamens verwenden .host
; die Umgebungseinrichtung erfolgt durch automatischen Aufruf von PAM(login):
systemctl --machine [email protected] --user restart user-a-service