Warum schlägt das Neuladen von Benutzer-Daemons fehl?

Warum schlägt das Neuladen von Benutzer-Daemons fehl?

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 sudoführen Sie die Operation systemctl --userals 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 suoder sudoist in diesem speziellen Sinne möglicherweise nicht unbedingt vollständig mit einer echten Anmeldung identisch. Wenn Ihre Linux-Distribution den loginctlBefehl 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 --globalOption ist nur mit systemctl enableoder 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

verwandte Informationen