為什麼重新載入用戶守護程序失敗?

為什麼重新載入用戶守護程序失敗?

如果我做:

sudo systemctl --user daemon-reload

它失敗了:

Failed to connect to bus: No such file or directory

「sudo」是必需的,因為這屬於軟體包安裝。

答案1

使用 時sudo,您將以systemctl --userroot 身分執行...但如果 root 當時未登錄,則 root 沒有活動的每個使用者 D-Bus 實例。

只有實際登入的使用者才會執行特定於使用者的 D-Bus 實例。在這個特殊意義上,使用suorsudo不一定完全等同於真正的登入。如果您的 Linux 發行版具有該loginctl命令,請使用不帶任何參數的命令來查看哪些用戶具有活動會話(從某種意義上說,他們具有活動的每個用戶 D-Bus 實例)。

--global選項僅對systemctl enable或有意義systemctl disable

如果您想systemctl --user daemon-reload在所有目前活動使用者的會話上執行,您可能需要執行以下操作:

#!/bin/sh
for reloaduser in $(loginctl --no-legend list-users | awk '{print $2;}')
do
    sudo -u $reloaduser systemctl --user daemon-reload
done

相關內容