为什么重新加载用户守护程序失败?

为什么重新加载用户守护程序失败?

如果我做:

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

相关内容