更新

更新

我在 Debian Wheezy 中遇到 LSB Init Scripts 的奇怪行为。我可以通过以下示例演示该问题:

该脚本在运行级别和中/etc/init.d/resolvconf启动S并停止。06

# Default-Start:     S
# Default-Stop:      0 6

事实上,当我chkconfig resolvconf on打开脚本时,我看到符号链接已在各自的运行级别目录中创​​建:

$ ls /etc/rc?.d/*resolvconf
/etc/rc0.d/K02resolvconf
/etc/rc6.d/K02resolvconf
/etc/rcS.d/S13resolvconf

当我使用 关闭脚本时chkconfig resolvconf off,符号链接消失。到目前为止,一切都很好。

现在,我决定不要让脚本在 中启动S(我将手动启动它),但我仍然希望它在 运行级别 中停止06我相应地更改了默认启动:

# Default-Start:     
# Default-Stop:      0 6

并打开脚本chkconfig resolvconf on。但什么也没发生。

$ ls /etc/rc?.d/*resolvconf
ls: cannot access /etc/rc?.d/*resolvconf: No such file or directory

尚未创建符号链接,并且脚本不会在运行级别06.

这里发生了什么?

如何让脚本仅在运行级别0和中运行(停止) 6,而不在 中启动S

更新

正如@Rui F Ribeiro 所建议的,我已经完全删除了该# Default-Start:行。现在,当我运行时chkconfig resolvconf on,我收到以下错误:

insserv: Script resolvconf is broken: incomplete LSB comment.
insserv: missing `Default-Start:'  entry: please add even if empty.
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `resolvconf'

不过,符号链接已创建。

$ ls /etc/rc?.d/*resolvconf
/etc/rc0.d/K02resolvconf
/etc/rc6.d/K02resolvconf

但为什么我会收到这些错误?

答案1

chkconfig 只读取“默认开始”行计算脚本的运行级别时。它计算运行级别的数量并且只计算调用的数量insserv 如果至少请求一个运行级别在“默认启动”中...

避免这种行为的解决方法包括:

  • 启用服务chkconfig -a
  • 禁用服务chkconfig -d
  • 直接使用insservinsserv service来启用serviceinsserv -r service来删除它。

相关内容