update-rc.d和init.d依赖项

时间:2012-08-22 19:42:18

标签: boot rc init.d

所以我试图编写一些满足LSB的init.d脚本,以便它们在启动和关闭时正常运行。不幸的是,我遇到了LSB / update-rc.d以满足依赖性的问题。

# Required-Start: $network $local_fs hadoop-namenode hadoop-datanode zookeeper-server
# Required-Stop:  $network $local_fs hadoop-namenode hadoop-datanode zookeeper-server
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6

但是,当我运行update-rc.d默认值时,它只会生成所涉及的默认值,其启动时间与已经存在的启动时间完全相同,这会破坏可怕的事情。我是否遗漏了update-rc.d或LSB的内容以进行配置?

如果相关,则为Ubuntu 12.04

2 个答案:

答案 0 :(得分:12)

要使脚本在引导序列中稍后运行,只需在以下命令中添加序列号,例如 98 。然后大多数依赖都会得到满足。

有一次,我不得不使用依赖于其他启动脚本的启动脚本。这带来了很多麻烦。最后我用这个命令来解决问题:

cd /etc/init.d
sudo update-rc.d my_script defaults 98

98 意味着my_script在启动时获得序列号98,看起来它的范围从1到99,并且大多数其他启动脚本的数字较小,这可以确保我的脚本具有所有它的依赖准备好了。

顺便说一句,要删除旧脚本,可以使用:

sudo update-rc.d -f my_old_script remove
# -f means 'force'

希望这有帮助。

答案 1 :(得分:8)

这种方法在某些系统上不再起作用(例如Debian Squeeze)。这个数字只是被忽略而没有任何解释。首选方法是:http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html

查看“Required-Start:”脚本声明。