systemctl 编辑问题“无法连接到总线”

Ste*_*lde 3 systemd

当我尝试创建一个新的 systemd 单元时(在 Ubuntu 16.04 上)

$ sudo systemctl edit --user --full --force wagoOpenhabBridge.service
Failed to connect to bus: No such file or directory
Run Code Online (Sandbox Code Playgroud)

除了这个问题,我的 systemd 运行良好。
经过一些互联网研究,我检查了这些东西:

  • 我没有使用 docker,Ubuntu 直接在 Intel NUC x64 硬件上运行
  • systemd 正在以 PID=1 运行
  • env 中的 XDG 变量是

    XDGSESSIONID=1790   
    XDGDATADIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop     
    XDGRUNTIMEDIR=/run/user/1000
    
    Run Code Online (Sandbox Code Playgroud)

任何想法出了什么问题?我还可以检查哪些其他事项?

pim*_*pim 9

我刚刚遇到了一个类似的问题,它是由于尝试以我没有登录的用户身份运行服务引起的(该用户已禁用登录,我正在使用susg伪造它)。

为什么sudo

您可能已添加,sudo因为该命令不起作用,您可以安全地删除它。一个用户systemd服务是普通用户所拥有的常规文件。

定影 Failed to connect to bus: No such file or directory

我在stackexchange上找到了解决方案,DBUS_SESSION_BUS_ADDRESS您的环境中似乎缺少该解决方案。

您的命令可以这样运行:

export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
systemctl edit --user --full --force wagoOpenhabBridge.service
Run Code Online (Sandbox Code Playgroud)

登录前运行命令

如果您希望在用户登录之前启动服务,请不要忘记运行:

sudo loginctl enable-linger USERNAME
Run Code Online (Sandbox Code Playgroud)


小智 0

软件包安装了吗dbus

我在以用户身份运行时注意到了类似的问题systemctl show $UNIT,尝试连接/var/run/dbus/system_bus_socket仅在dbus-daemon --system运行时存在,而该连接本身需要dbus安装软件包。

您可以通过strace检查执行了哪些系统调用来进一步调查,并确定“无法连接到总线:没有这样的文件或目录”具体涉及哪些问题。即使不尝试访问系统总线,也可能与 D-Bus 相关。

您的systemd软件包可能包含dbusRecommends至少在 Debian 9 中是这样);当某些事情没有按预期工作时,检查这些通常是一个好主意。