我应该禁用 systemd 和 sysvinit 以从运行级别禁用服务吗?

我应该禁用 systemd 和 sysvinit 以从运行级别禁用服务吗?

我的应用程序应该在 systemd 运行的系统和 systemd 不可用的旧平台上运行。因此,我使用 chkconfig 和 systemctl enable 将我的服务注册到运行级别。

我应该怎么做才能从运行级别禁用我的服务?我应该禁用 systemctl 和 chkconfig 吗?

答案1

干净的解决方案是检查正在使用哪个 init 系统然后仅运行适用于正在使用的 init 系统的命令。

答案2

对于sysvinit系统,chkconfig创建一个指向运行服务的脚本的链接,并根据您为服务指定的运行级别/etc/rc.d/init.d放置它。/etc/rc*.d

对于systemd系统,systemctl enable创建一个链接并将其放在与系统不同的文件夹chkconfigsysvinit

例如,对于多用户级别,将其放入/etc/systemd/system/multi-user.target.wants/

对于您的情况,如果您有一个正在运行的脚本,/etc/init.d 那么当您调用systemd disable它时,请删除链接,/etc/systemd/system/X/ 但是当您调用chkconfig它时sysvinit,请删除链接/etc/rc*.d

相关内容