7

所以我正在尝试编写一些满足 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 defaults 时,它只会生成所涉及的默认值,其开始时间与已经存在的依赖项完全相同,这非常糟糕。我是否缺少 update-rc.d 或 LSB 来配置它?

如果相关,这是 Ubuntu 12.04

4

2 回答 2

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'

希望这可以帮助。

于 2012-09-20T02:13:22.057 回答
8

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

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

于 2013-04-30T12:57:55.813 回答