【问题标题】:update-rc.d and init.d dependenciesupdate-rc.d 和 init.d 依赖项
【发布时间】:2012-08-18 07:11:47
【问题描述】:

所以我正在尝试编写一些满足 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

【问题讨论】:

    标签: boot rc init.d


    【解决方案1】:

    要使您的脚本在启动序列中稍后运行,只需在以下命令中添加一个序列号,例如 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'
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 是的,我认为这是因为 Debian 使用 Squeeze 添加了并发启动项。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 2014-01-01
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多