如果我做:
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