所以我试图编写一些满足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
答案 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:”脚本声明。