Как остановить запуск демона при загрузке в Debian

16

Есть несколько демонов, которые я запрещаю запускать при загрузке. В качестве примера я использую следующее:

 sudo update-rc.d -f postgresql remove

Я даже не уверен, что эта команда верна, и я не помню, откуда я ее взял.

В любом случае, когда я обновляюсь postgresql, настройка теряется (т. Е. Демон запускается при перезагрузке).

tshepang
источник
1
На Debian с SysVinit мне нравится file-rc. Вместо того, чтобы управлять символическими ссылками, я управляю текстовым файлом с моими конфигурациями уровня выполнения.
Жиль "ТАК - перестань быть злым"

Ответы:

22

update-rc.dизначально использовался сценариями обновления пакетов. removeвызывается при удалении пакета и удаляет все ссылки, defaultsвызывается при установке пакета enableили disableможет использоваться в зависимости от debconf и полезны для системных администраторов. Очистки removeна самом деле не являются полезными для отключения службы. Со страницы руководства:

Распространенной ошибкой системного администрирования является удаление ссылок с мыслью, что это «отключит» службу, т. Е. Предотвратит запуск службы. Однако, если все ссылки были удалены, то при следующем обновлении пакета сценарий postinst пакета снова запустит update-rc.d и переустановит ссылки в их заводских местоположениях по умолчанию. Правильный способ отключить службы - настроить службу как остановленную на всех уровнях выполнения, на которых она запускается по умолчанию. В системе инициализации System V это означает переименование символических ссылок службы с S на K.

sudo update-rc.d postgresql disableбудет делать то, что вы хотите, потому что он сохраняет символические ссылки rc.d, но с префиксом K (убит, остановлен). Вернуть его с enable. Некоторые службы поддерживают отключение из своего /etc/defaults/$serviceфайла, но, к сожалению, есть исключения. Другие способы отключить службу - это chmod -x /etc/init.d/$serviceфайл или вставить его exit 0вверху.

Tobu
источник
6

Чтобы уточнить лучшее решение, похоже на ответ, который дал Тобу:

  1. Не используйте update-rc.dс removeопцией.
  2. Вместо этого используйте update-rc.dс disableопцией.

Пример: update-rc.d postgresql disable


PLUS, вы также можете найти (и отключить) другие, более конкретные услуги с systemctl.

Пример: systemctl disable pppd-dns.service

Arahkun
источник
+1 за совет не использовать опцию
УДАЛИТЬ
3

Tobu абсолютно верно, но для полноты картины есть инструмент , чтобы дать вам смарт - обзор: sysv-rc-conf. Для копирования и патча:

apt-get install sysv-rc-conf

Запустив, sysv-rc-confвы увидите, какой скрипт выполняется на каком уровне запуска. Вы можете включить / отключить услуги через spaceи выйти с помощью q.

binfalse
источник
2
Мне также нравится rcconf, его в стандартных репо. Помните, что ни один из них не будет работать с upstart, который используется по умолчанию в Ubuntu. Хотя множество вещей все еще использует устаревший init.
JM Becker