无法禁用 systemd 服务

Posted

技术标签:

【中文标题】无法禁用 systemd 服务【英文标题】:Cannot disable systemd service 【发布时间】:2015-08-23 14:33:36 【问题描述】:

我一直在使用来自 systemd 的 dbus API,并且我一直在使用 EnableUnitFiles() 函数启用服务,详见此处http://www.freedesktop.org/wiki/Software/systemd/dbus/

但是,当我尝试使用命令禁用相同的服务时

systemctl disable "service_name"

并跟进检查服务是否被禁用

systemctl status "service_name"

它仍然显示要启用的服务。我目前正在运行 Centos7。

任何关于我为什么不能禁用该服务的见解都将不胜感激。 谢谢!

【问题讨论】:

【参考方案1】:

尝试 systemd mask 命令而不是 disable

systemctl mask <service_name>

disable 命令仍然允许启动服务,例如,响应另一个服务请求它作为依赖项(即使是可选的),或者手动启动。但是mask 完全禁用了该服务。

另外,我不相信maskdisable 实际上会停止正在运行的服务:他们只是配置了该服务在未来的启动。因此,你也应该这样做systemctl stop &lt;service_name&gt;

【讨论】:

好的,非常感谢。虽然我想知道为什么在我执行systemctl disable "service_name" 并使用systemctl status "service_name" 进行检查后,它仍然在“已加载:”字段中显示它已启用?无论如何将此状态更改为禁用,而不是掩码将其更改为 /dev/null。谢谢! 谢谢。在我看来,这是一个糟糕的设计,disable 应该做 mask 所做的事情,并且可能还有另一种选择,例如 soft-disable 目前与 disable 做的事情。

以上是关于无法禁用 systemd 服务的主要内容,如果未能解决你的问题,请参考以下文章

跟踪 systemd 服务的调用者

禁用systemd网卡命名规则

为啥在 WSL 中禁用 systemd?

无法启动 systemd 服务

yocto systemd 启动后无法启动服务

systemd 服务无法连接到会话 d-bus