7.5. Управление уровнями выполнения в Debian
Проблема
Требуется выбрать службы, запускающиеся при загрузке системы Debian, на каждом уровне выполнения. При установке новых служб (таких, как Apache, Exim или OpenSSH) Debian автоматически настраивает их на запуск при загрузке. Но пока тестирование ещё не завершено, вы предпочитаете запускать и останавливать их вручную. А может быть, во время тестирования на разных уровнях должны стартовать разные службы.
Решение
Воспользуйтесь командой update-rc.d
. В следующем примере на уровне 5 добавляется новая служба KDE Display Manager. kdm
— имя запускаемого файла в /etc/init.d
. Список уровней выполнения должен завершаться точкой:
# update-rc.d kdm start 99 5 . stop 01 0 1 2 3 4 6 .
Следующая команда удаляет службу на всех уровнях выполнения. Удаление не может быть избирательным; удаляется либо на всех уровнях, либо не удаляется вовсе:
# update-rc.d -f kdm remove
Изменение уровня выполнения для существующей службы производится в два этапа: сначала удалите службу, а затем добавьте её на нужных уровнях. Обязательно создайте записи для всех служб на всех уровнях, как для запуска, так и для остановки.
Комментарий
Помните, что update-rc.d
работает с именами сценариев в /etc/init.d
. Для тестирования команд update-rc.d
используется ключ -n
, который позволяет увидеть, какие изменения будут внесены, не применяя их:
# update-rc.d -f -n kdm remove
При необходимости можно удалить сценарии из /etc/init.d
при помощи ключа --purge
:
# update-rc.d --purge kdm remove
Однако обычно лучше оставить сценарии на случай, если они понадобятся в будущем. Полное удаление может быть полезно только в том случае, если служба больше не будет использоваться.
Вы также можете проверить, какие службы настроены на запуск на каждом уровне выполнения, при помощи команды ls /etc/rc*.d
. Это позволит вам увидеть активные службы и те, которые настроены на остановку на разных уровнях.
Если вы хотите временно отключить службу, не удаляя её полностью, можно использовать команду systemctl disable
(если используется systemd) или изменить символьные ссылки в директориях /etc/rcX.d
(где X — это номер уровня выполнения).
См. также
update-rc.d(8)