我正在尝试从用户帐户运行,systemctl --user status
以便不从 root 运行服务。
我的做法如下:
loginctl enable-linger $USER
export XDG_RUNTIME_DIR="/run/user/$UID"
然后当我运行时systemctl --user status
出现以下错误:Failed to connect to bus: No such file or directory
我尝试调试这个。
- 通过以下方式设置
DBUS_SESSION_BUS_ADDRESS
环境变量:export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"
这并没有解决问题。(来源) - 每次更改后重新启动服务器。
- 重新安装 dbus
sudo apt reinstall dbus-user-session
我还注意到该XDG_RUNTIME_DIR
目录不存在,例如sudo ls -l /run/user/1001
我不确定还能尝试什么或如何更多地了解这个问题,以便能够以更明智的方式解决这个问题。
任何可以帮助我调试和理解这一点的信息都非常受欢迎。
PS 我正在运行 Ubuntu 20.04.5,问题很可能发生在sudo apt-get upgrade
我运行之后。在此之前它运行良好。
答案1
我遇到了同样的问题,不过重启有帮助。你还应该知道你需要为用户编辑 .bashrc。查看我的 wiki 页面以获取说明
https://dw.exitstatus0.com/doku.php?id=wiki:systemd_user_service#troubleshooting