update-rc.d - установка и удаление ссылок сценариев инициализации в стиле System-V
update-rc.d [-n] [-f] имя remove
update-rc.d [-n] имя defaults [NN | SS KK]
update-rc.d [-n] имя start|stop NN уровень_запуска [уровень_запуска]... . start|stop NN уровень_запуска [уровень_запуска]... . ...
update-rc.d обновляет ссылки на сценарии инициализации стиля System-V в каталоге /etc/rcуровень_запуска.d/NNимя, которые указывают на сценарии /etc/init.d/имя. Эти ссылки запускаются init при смене уровня запуска системы; в основном они используются для запуска и останова системных служб - демонов. уровень_запуска - это один из уровней запуска, поддерживаемых init, а именно, 0123456789S, а NN - это число из двух цифр, которое задаёт последовательность запуска сценариев инициализации.Это руководство описывает только использование и поведение update-rc.d. За обсуждением порядка инициализации в стиле System-V обратитесь к init(8) и Руководству по политике Debian (Debian Policy Manual).
Учтите, что эта программа спроектирована для использования в сценариях сопровождающих пакеты и, соответственно, она имеет очень ограниченную функциональность, необходимую этим сценариям. Системным администраторам не рекомендуется использовать update-rc.d для управления уровнями запуска. Они должны редактировать ссылки напрямую или воспользоваться вместо неё другими редакторами, например sysv-rc-conf или bum.
При запуске с любой из опций, default, start или stop, update-rc.d создаёт ссылки /etc/rcуровень_запуска.d/[SK]NNимя, которые указывают на сценарий /etc/init.d/имя.Если какой-либо из файлов /etc/rcуровень_запуска.d/[SK]??имя уже существует, update-rc.d ничего не делает. Программа была написана таким образом, что она никогда не меняет существующие настройки, поскольку системный администратор мог выполнить более тонкую настройку. Программа только вставляет ссылки, если их нет, например если указанный сервис до этого не был установлен ни разу.
Обычная ошибка системного администрирования - это удалить ссылки, полагая что это "отключит" сервис, то есть, что это предотвратит сервис от запуска. Однако, даже если все ссылки были удалены, то при следующем обновлении пакета, сценарий postinst пакета снова запустит update-rc.d и это переустановит ссылки в места по умолчанию. Правильный способ удалить сервисы - это настроить остановку служб на всех уровнях запуска, на которых он запускается по умолчанию. В системе инициализации в стиле System V это означает переименование ссылок на сервис с буквы S на K.
Если используются настройки по умолчанию, тогда update-rc.d делает ссылки на включение сервиса на уровнях По умолчанию все ссылки имеют порядковый номер 20, но оно должно быть заменено, если существуют зависимости. Например, если демон B зависит от демона A, тогда A должен быть запущен раньше B, а B должен быть завершён до A. Вы можете достичь этого указав два аргумента NN. В общем, ключевые демоны должны быть запущены раньше и завершены позже, в то время как приложения могут быть запущены позже и остановлены раньше. Смотри ПРИМЕРЫ ниже.
Первый аргумент NN представляет последовательность запуска, а второй аргумент NN представляет последовательность завершения. Сначала вызываются сценарии остановки, снабжённые аргументом stop. Затем вызываются сценарии запуска, снабжённые аргументом start. В обоих случаях вызовы происходят порядке увеличения порядкового номера.
При указании единственного аргумента NN одно и то же число будет использоваться в обеих ссылках - запуска и останова. Это поддерживается для обратной совместимости, но не рекомендуется, поскольку может привести к противоречивым настройкам. На практике применяется правило, что если вы увеличите порядковый номер запуска, вы также должны уменьшить порядковый номер останова, и наоборот.
На практике применяется правило, что порядковый номер ссылки для останова должен быть равен 100 минус порядковый номер ссылки для запуска; это приводит к тому, что службы останавливаются в порядка, противоположенном тому, в котором они запускались. Очевидно поэтому для останова по умолчанию должен использоваться порядковый номер 80. Однако по умолчанию update-rc.d использует значение 20, это старая ошибка, которая не может быть исправлена, потому что существует риск поломки.
Вместо опции defaults можно указать один или более наборов аргументов, указывающих особые уровни запуска, на которых служба запускается или останавливается. Каждый из этих наборов аргументов начинается с ключевого слова start или stop и порядкового номера NN, за которым следует один или больше уровней запуска. Набор завершается единственным символом точки. При точном указании, в отличие от defaults, обычно используется один набор start и один набор stop. Если необходимы различные коды последовательности на различных уровнях запуска, тогда может быть указано несколько наборов start и несколько наборов stop. Если это так и один и тот же уровень запуска указан в нескольких наборах, то считается только последний. Таким образом, невозможно создать несколько стартовых или несколько остановочных ссылок для сервиса в одном каталоге уровня запуска.
Для создания ссылок сценарий /etc/init.d/имя должен существовать до запуска update-rc.d.
При вызове с опцией remove, update-rc.d удалит любые ссылки в каталогах /etc/rcуровень_запуска.d на сценарий /etc/init.d/имя. Сценарий должен быть уже удалён. Если сценарий по-прежнему существует, update-rc.d завершится с сообщением об ошибке.update-rc.d обычно вызывается из сценария post-removal пакета, когда этот сценарий задан аргументом purge. Любые файлы в каталоге /etc/rcуровень_запуска.d, которые не являются символическими ссылками на сценарий /etc/init.d/имя останутся нетронутыми.
-n Ничего не делать, просто показать что должно быть сделано. -f Принудительно удалить ссылки, даже если /etc/init.d/имя всё ещё существует.
Вставить ссылки по умолчанию:update-rc.d foobar defaultsРавнозначная команда, использующая наборы конкретных аргументов:update-rc.d foobar start 20 2 3 4 5 . stop 20 0 1 6 .Более типичная команда, использующая конкретные наборы аргументов:update-rc.d foobar start 30 2 3 4 5 . stop 70 0 1 6 .Вставить ссылки на уровни запуска по умолчанию, если B требует A:update-rc.d script_for_A defaults 80 20 update-rc.d script_for_B defaults 90 10Вставить ссылки на службу, которая (предположительно) не требуется какими-либо другими демонами:update-rc.d top_level_app defaults 98 02Вставить ссылки на сценарий, который требует службы, запускаемые/останавливаемые с порядковым номером 20:update-rc.d script_depends_on_svc20 defaults 21 19Удалить все ссылки на сценарий (в надежде что foobar уже удален):update-rc.d foobar removeПример отключения службы:update-rc.d -f foobar remove update-rc.d foobar stop 20 2 3 4 5 .Пример команды для установки сценария для запуска и остановки системы:update-rc.d foobar start 45 S . stop 31 0 6 .Пример команды для отключения сценария для запуска и остановки системы:update-rc.d -f foobar remove update-rc.d foobar stop 45 S .
Обратитесь к странице http://bugs.debian.org/sysv-rc.
/etc/init.d/ Каталог, содержащий действующие сценарии инициализации. /etc/rc?.d/ Каталоги, содержащие ссылки, используемые init и управляемые update-rc.d. /etc/init.d/skeleton Модель, используемая для написания сценариев init.d.
Руководство по политике Debian (Debian Policy Manual),
/etc/init.d/skeleton,
sysv-rc-conf(8), bum(8), init(8).
Перевод выполнен на сайте коллективных переводов http://translated.by. Авторы перевода Олег Безначев aka saturn721, Владимир Ступин <wheelof@gmail.com>.
Проект Debian | UPDATE-RC.D (8) | 14 ноября 2005 |