【发布时间】:2026-01-04 18:30:01
【问题描述】:
我正在尝试使用 Ansible 和 systemd 设置一些用户服务。
在 Ubuntu 和 RHEL 7 上我得到了
# systemctl --user status
Failed to get D-Bus connection: Connection refused
对于 Ubuntu,我澄清了错误,这是因为:
https://docs.ansible.com/ansible/latest/modules/systemd_module.html
在给定的服务管理器范围内运行 systemctl,可以作为默认系统范围(系统)、当前用户的范围(用户)或所有用户的范围(全局)。 为了使 systemd 与“用户”一起工作,执行用户必须启动自己的 dbus 实例(systemd 要求)。用户 dbus 进程通常在正常登录期间启动,但不会在 Ansible 任务运行期间启动。否则您可能会收到“无法连接到总线:没有这样的文件或目录”错误。
基本上DBus需要先启动systemd --user才能工作。我也不知道该怎么做,但我想我可以通过其他方式解决它。
但是,目前的主要障碍是:一般来说,我如何检查功能的可用性?
我试过systemctl show 并没有明确的“用户”功能。标志是Features 行中的“+PAM”吗?我知道 systemd 至少部分使用 PAM 来实现它,我不知道其他功能是否需要它。
如何检查“我的”systemd 是否以可靠的方式支持--user?有文件可以查吗?命令?还有什么? DBus 巫毒教?
【问题讨论】:
标签: linux ansible systemd dbus