
如果我做:
sudo systemctl --user daemon-reload
它失敗了:
Failed to connect to bus: No such file or directory
「sudo」是必需的,因為這屬於軟體包安裝。
答案1
使用 時sudo
,您將以systemctl --user
root 身分執行...但如果 root 當時未登錄,則 root 沒有活動的每個使用者 D-Bus 實例。
只有實際登入的使用者才會執行特定於使用者的 D-Bus 實例。在這個特殊意義上,使用su
orsudo
不一定完全等同於真正的登入。如果您的 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