禁止在所有运行级别启动服务?

lfa*_*one 66 startup debian daemon rc.d debian-lenny

我有一项服务foo,目前从运行级别3及更高级别开始。我怎样才能在不使用的情况下阻止它这样做update-rc.d foo stop 3 .,它(如果我理解正确的话)会在每次运行级别更改时关闭服务。

(即,如果我处于运行级别1并启用foo,那么当我更改为运行级别3 时,它将被禁用,不是吗?)

运行 Debian GNU/Linux Lenny。

PEr*_*Era 60

“停止”术语不会阻止守护进程启动,而是在进入指定的运行级别时将其关闭。

如果您只想从单个运行级别中删除服务/守护程序,update-rc.d正如 bei freiheit所指出的那样,或者只是从 中删除符号链接/etc/rcX.d/,其中 X 是您的运行级别。如果您不希望服务自动启动,update-rc.d -f foo remove就可以解决问题。

  • 任何想法如何在 Debian 8 上做到这一点?`sudo update-rc.d -f sunrpc remove` 不起作用;重启后它仍然存在。 (2认同)

Not*_*Now 59

使用 sysv-rc-conf 配置 Linux 启动应用程序

apt-get install sysv-rc-conf
Run Code Online (Sandbox Code Playgroud)

正如其他人所指出的,这里也是cmd 行的update-rc.d

例如,运行

update-rc.d apache2 disable
Run Code Online (Sandbox Code Playgroud)

从所有运行级别禁用 apache2。

  • 请注意,这不会停止正在运行的服务,要实现这一点,您需要添加:`service foo stop` 或重新启动服务器 (2认同)

Rob*_*mer 15

短的:

没有可靠的方法可以快速做到这一点。

长:

当前的 Debian(Debian 不稳定,截至 2012-06-01)目前没有可靠的快捷方式来持续禁用服务/守护进程。– 因为守护程序包的升级无条件运行“/etc/init.d/package restart”,无论是否为此运行级别禁用它。

要确保守护进程不会启动,您可以:

  • 卸载它
  • 对 /etc/init.d/xyz 脚本进行本地转移(这样,没有工具会找到它)
  • 使用/滥用相应包的配置文件来引发该脚本的提前退出(例如,在 /etc/default/xyz 的早期放置一个“退出”,以防它来自 init 脚本)
  • 在该 init 脚本中查找不启动该守护进程的预定义“官方”方法

Debian 中的 init 脚本有/曾经(?)一些 init-policy-something 步骤,它应该填补这个缺失的功能。– 我尝试使用它,发现它很复杂,发现了一个错误,然后再也没碰过它。

更新:

切换到“systemd”,替代“initd”。存在一个 debian 包,您可以使用以下内容禁用服务:

cd /etc/systemd/system
ln -s /dev/null xyz.service
Run Code Online (Sandbox Code Playgroud)


小智 6

运行这个命令

apt-get 安装 rcconf

安装后,在 SSH 中运行 rcconf,您将收到一个对话框,显示所有设置为在启动时运行的服务。通过按空格键来禁用/启用特定选项,然后您就完成了,简单地单击“确定”,该服务不会在下次启动时再次启动。多年来一直在使用这个。对于像我这样的 Debian/Ubuntu 用户来说非常方便的工具。