Позволяет задать последовательность загрузки и поведение скрипта при разных runlevel'ах.
Изучаем /etc/init.d/skeleton
, на его основе создаем скрипт /etc/init.d/my_script
, которым будет запускаться/останавливаться наше приложение.
В этих директориях лежат скрипты остановки сервисов:
/etc/rc0.d/ /etc/rc1.d/ /etc/rc6.d/
в этих — скрипты запуска сервисов:
/etc/rc2.d/ /etc/rc3.d/ /etc/rc4.d/ /etc/rc5.d/
Изучаем их на предмет последовательности (чем меньше первая цифра в начале скрипта, тем раньше запускается-останавливается приложение). Это может быть критично, если ваше приложение будет зависит от каких-то сервисов.
После того, как определились со скриптом запуска и очередностью, выполняем следующее :
Устаревшее
sudo update-rc.d my_script start 70 2 3 4 5 . stop 20 0 1 6 .
Новое
sudo update-rc.d my_script defaults
Здесь я определил, что мой скриптик должен запускаться попозже остальных(70), и останавливаться пораньше(20). Цифры 2 3 4 5 0 1 6 означают уровни загрузки.
Если что-то не понравилось - все можно удалить
sudo update-rc.d -f my_script remove
Подробности в man update-rc.d
.
Выполнение скрипта при включении/отключении сети
Есть директория /etc/network/
с поддиректориями if-down.d, if-pre-up.d, if-post-down.d, if-up.d
. Если разместить скрипт в одной из этих поддиректорий, то он будет выполняться соответственно при выключении, перед включением, после выключения или при включении сети.
Другой способ — указать в файле /etc/network/interfaces
одну из следующих директив: up, pre-up, post-up, down, pre-down, post-down.
Например, строка
post-up /peth/to/script.sh
после включения сети выполнит скрипт script.sh. Подробнее можно почитать в man interfaces.
В любом случае на скрипт должны быть установлены права, разрешающие выполнение, иначе он не сможет запуститься.