从今天起,当我尝试systemctl
使用 root 帐户执行时,它们会失败并出现Connection timed out
错误:
>sudo systemctl
>Failed to list units: Connection timed out
同样的事情也发生在systemctl start
或systemctl stop
以 root 身份运行时。
如果我尝试使用用户帐户运行相同的命令,则不会出现错误Connection timed out
(由于用户帐户缺乏权限,启动和停止会出现预期的错误)。
如果我重新启动服务器,我知道的所有服务都会正确启动,但仍然会出现相同的超时错误。
PD:使用 openSuse 13.2(Linux 版本 3.16.7-21-default)
答案1
我终于找到问题了。
我认为进程 1(systemd)已启动--切换根和--反序列化我发现那个链接似乎有一些内部参数试图重新加载一些以前保存的状态。
我已经对进程 1 执行了 kill -9,现在 systemd 出现时没有切换根,并且 systemctl 可以再次工作,无论是否重新启动。
答案2
该问题的两种替代解决方案:
1- 重新启动
systemctl --force --force reboot
或者
2- 无需重启,只需移动会话文件
mv /run/systemd/system/session-*.scope /tmp/
答案3
另一个可能出现这种情况的原因是当systemd
在虚拟化环境中运行时。如果不同的实例systemd
从文件系统获取相同的机器 ID(/etc/machine-id
)或来自其他后备方法,系统将变得不稳定,您在使用systemctl
或其他 systemd 实用程序时会看到此错误。
systemd
我可以验证这种情况是否发生在使用进程作为入口点的 docker 容器中。添加此内容以帮助其他人解决这个模糊的错误。