我禁用了一些守护进程,使其无法在启动时启动。作为示例,我使用以下内容:
sudo update-rc.d -f postgresql remove
我什至不确定该命令是否正确,也不记得从哪里得到它。
无论如何,每当我升级时postgresql
,设置丢失(即守护进程在重新启动时启动)。
答案1
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
答案2
为了阐明最佳解决方案,类似于 Tobu 给出的答案:
- 不要
update-rc.d
与选项一起使用remove
。 - 相反,请
update-rc.d
与该disable
选项一起使用。
例子:update-rc.d postgresql disable
另外,您还可以使用 查找(并禁用)其他更具体的服务systemctl
。
例子:systemctl disable pppd-dns.service
答案3
Tobu 是绝对正确的,但为了完整起见,有一个工具可以为您提供智能概述:sysv-rc-conf
。对于复制和粘贴:
apt-get install sysv-rc-conf
运行sysv-rc-conf
你会看到哪个脚本在哪个运行级别执行。您可以通过 启用/禁用服务space
并通过 退出q
。