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


16

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

 sudo update-rc.d -f postgresql remove

我什至不确定该命令是否正确,而且我不记得我从哪里得到的命令。

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


1
在带有SysVinit的Debian上,我喜欢file-rc。我没有管理符号链接,而是使用运行级别配置管理文本文件。
吉尔斯(Gilles)'所以

Answers:


22

update-rc.d最初由软件包升级脚本使用。remove在软件包卸载时被调用并删除所有链接,defaults在软件包安装时被调用,enable或者disable取决于debconf可能被使用,这对于sysadmins很有用。remove实际上,清理对禁用服务没有帮助。从手册页:

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

sudo update-rc.d postgresql disable将执行您想要的操作,因为它保留rc.d符号链接,但带有K(已杀死,已停止)前缀。用还原它enable。某些服务支持从其/etc/defaults/$service文件中禁用,但遗憾的是有一些例外。禁用服务的其他方法是chmod -x /etc/init.d/$service文件,或在文件exit 0顶部插入。


6

为了阐明最佳解决方案,类似于Tobu给的答案:

  1. 不要update-rc.d与该remove选项一起使用。
  2. 而是update-rc.ddisable选项一起使用。

例: update-rc.d postgresql disable


另外,您还可以使用查找(并禁用)其他更特定的服务systemctl

例: systemctl disable pppd-dns.service


+1建议不要使用REMOVE选项
-PYK

3

Tobu是绝对正确的,但是为了完整起见,有一个工具可以给您一个聪明的概述:sysv-rc-conf。对于复制和粘贴:

apt-get install sysv-rc-conf

运行时,sysv-rc-conf您将看到在哪个运行级别执行了哪个脚本。您可以通过启用/禁用服务,space然后通过退出q


2
我也喜欢rcconf,它在标准存储库中。请记住,尽管这些都不适用于upstart,这在Ubuntu上是默认设置。尽管很多东西仍然使用传统的init。
JM Becker'3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.