update-rc.d and init.d dependencies

ohshazbot picture ohshazbot · Aug 22, 2012 · Viewed 24.2k times · Source

So I'm trying to write some init.d scripts satisfying LSB so they run appropriately at startup and shutdown. Unfortunately, I'm having issues with LSB/update-rc.d to satisfy dependencies.

# 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

however, when I run update-rc.d defaults, it merely generates the defaults involved, with the exact same start time as the already dependencies, which breaks things horribly. Am I missing something with update-rc.d or LSB to get this configured?

In case it's relevant, this is Ubuntu 12.04

Answer

Andrew_1510 picture Andrew_1510 · Sep 20, 2012

To make your script run later in the boot sequence, just add a sequence number, like 98 in the following command. Then most dependencies will be satisfied.

Once, I had to use a boot script which depended on other boot scripts. This brought a lot troubles. In the end I used this command to solve the problem:

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

The 98 means my_script gets sequence number 98 at boot, it looks like it's range from 1 to 99, and most other boot scripts have smaller numbers, this ensures my script has all its dependencies ready.

BTW, to remove the old script, this can be used:

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

Hope this helps.