如何阻止守护进程在 Debian 中启动时启动

tsh*_*ang 19 debian package-management

我在启动时禁用了一些守护进程。例如,我使用以下内容:

 sudo update-rc.d -f postgresql remove
Run Code Online (Sandbox Code Playgroud)

我什至不确定那个命令是否正确,我不记得我从哪里得到它。

无论如何,每当我升级时postgresql,设置都会丢失(即守护程序在重新启动时启动)。

Tob*_*obu 24

update-rc.d最初由包升级脚本使用。remove在软件包卸载时调用并删除所有链接,defaults在软件包安装时调用,enable或者disable可能根据 debconf 使用并且对系统管理员有用。清理remove实际上对禁用服务没有用。从手册页:

一个常见的系统管理错误是删除链接,认为这将“禁用”服务,即,这将阻止服务启动。但是,如果所有链接都已被删除,那么下次升级包时,包的 postinst 脚本将再次运行 update-rc.d,这将在出厂默认位置重新安装链接。禁用服务的正确方法是将服务配置为在默认启动的所有运行级别中停止。在 System V init 系统中,这意味着将服务的符号链接从 S 重命名为 K。

sudo update-rc.d postgresql disable会做你想做的事,因为它保留了 rc.d 符号链接,但带有 K(终止、停止)前缀。使用enable. 某些服务支持从其/etc/defaults/$service文件中禁用,但遗憾的是也有例外。禁用服务的其他方法是 chmod -x/etc/init.d/$service文件,或在文件exit 0顶部插入。


小智 8

为了澄清最佳解决方案,类似于东武给出的答案:

  1. 不要update-rc.dremove选项一起使用。
  2. 相反,update-rc.ddisable选项一起使用。

例子: update-rc.d postgresql disable


此外,您还可以使用systemctl.

例子: systemctl disable pppd-dns.service