我的应用程序应该在 systemd 运行的系统和 systemd 不可用的旧平台上运行。因此,我使用 chkconfig 和 systemctl enable 将我的服务注册到运行级别。
我应该怎么做才能从运行级别禁用我的服务?我应该禁用 systemctl 和 chkconfig 吗?
答案1
干净的解决方案是检查正在使用哪个 init 系统然后仅运行适用于正在使用的 init 系统的命令。
答案2
对于sysvinit
系统,chkconfig
创建一个指向运行服务的脚本的链接,并根据您为服务指定的运行级别/etc/rc.d/init.d
放置它。/etc/rc*.d
对于systemd
系统,systemctl enable
创建一个链接并将其放在与系统不同的文件夹chkconfig
中sysvinit
。
例如,对于多用户级别,将其放入/etc/systemd/system/multi-user.target.wants/
对于您的情况,如果您有一个正在运行的脚本,/etc/init.d
那么当您调用systemd disable
它时,请删除链接,/etc/systemd/system/X/
但是当您调用chkconfig
它时sysvinit
,请删除链接/etc/rc*.d