Зависимости update-rc.d и init.d
Поэтому я пытаюсь написать несколько скриптов init.d, удовлетворяющих LSB, чтобы они работали надлежащим образом при запуске и завершении работы. К сожалению, у меня проблемы с 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 ответа
Чтобы ваш скрипт запускался позже в последовательности загрузки, просто добавьте порядковый номер, например 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'
Надеюсь это поможет.
Этот подход больше не работает в некоторых системах (например, Debian Squeeze). Число просто игнорируется без объяснения причин. Предпочтительный метод: http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/initscrcomconv.html
Посмотрите на объявление скрипта "Required-Start:".