hostnamectl 显示错误:“无法创建总线连接:没有这样的文件或目录”

Eva*_*oll 5 hostname centos ansible

当我尝试hostname使用 ansible 模块进行设置时,我得到

\n\n
TASK [set hostname] **************************************************************************************\nfatal: [10.1.38.15]: FAILED! => {"changed": false, "msg": "Command failed rc=1, out=, err=Failed to create bus connection: No such file or directory\\n"}\n
Run Code Online (Sandbox Code Playgroud)\n\n

有趣的是,当我 ssh 到计算机并尝试设置主机名时,hostnamectl我也收到错误。

\n\n
bash-4.2# hostnamectl set-hostname foo.bar.com\nFailed to create bus connection: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n\n

我相信这两个问题是相关的,但dbus表明它正在运行,

\n\n
\xe2\x97\x8f dbus.service - D-Bus System Message Bus\n   Loaded: loaded (/usr/lib/systemd/system/dbus.service; static; vendor preset: disabled)\n   Active: active (running) since Tue 2020-01-07 09:04:45 CST; 2h 28min ago\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题可能是什么?我使用的是 Centos 7。

\n\n

显然,当我strace hostnamectl得到

\n\n
connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/dbus/system_bus_socket"}, 33) = -1 ENOENT (No such file or directory)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我可以确认它/var/run/dbus/system_bus_socket不存在

\n\n

ansible的玩法是

\n\n
- name: set hostname\n  hostname\n    name: cp-1-2.foo.bar.com\n
Run Code Online (Sandbox Code Playgroud)\n

Jde*_*eBP 6

我可以确认它/var/run/dbus/system_bus_socket不存在。

那么你的问题就在那里。 /var/run应该象征性地链接到/run,并且/run/dbus/system_bus_socket是作为 的结果而创建的dbus.socket

dbus.service顺便说一句,如果情况并非如此,那么再多的摆弄也无法解决其中任何一个问题。修复符号链接,或重新初始化套接字

  • “重新初始化套接字”:这可以使用“systemctl start dbus.socket”来完成。 (3认同)