
Wenn ich mache:
sudo systemctl --user daemon-reload
Es schlägt fehl mit:
Failed to connect to bus: No such file or directory
Dabei ist das „sudo“ notwendig, da dies zu einer Paketinstallation gehört.
Antwort1
Mit sudo
führen Sie die Operation systemctl --user
als Root aus. Wenn Root jedoch zu diesem Zeitpunkt nicht angemeldet ist, gibt es keine aktive D-Bus-Instanz pro Benutzer für Root.
Nur tatsächlich angemeldete Benutzer haben eine benutzerspezifische D-Bus-Instanz ausgeführt. Die Verwendung von su
oder sudo
ist in diesem speziellen Sinne möglicherweise nicht unbedingt vollständig mit einer echten Anmeldung identisch. Wenn Ihre Linux-Distribution den loginctl
Befehl hat, verwenden Sie ihn ohne Parameter, um zu sehen, welche Benutzer aktive Sitzungen haben (in dem Sinne, dass sie eine aktive D-Bus-Instanz pro Benutzer haben).
Die --global
Option ist nur mit systemctl enable
oder sinnvoll systemctl disable
.
Wenn Sie die Ausführung auf allen derzeit aktiven Benutzersitzungen durchführen möchten systemctl --user daemon-reload
, können Sie Folgendes tun:
#!/bin/sh
for reloaduser in $(loginctl --no-legend list-users | awk '{print $2;}')
do
sudo -u $reloaduser systemctl --user daemon-reload
done