Вопрос: Отключить службу от запуска на всех уровнях выполнения?


У меня есть сервис foo который в настоящее время начинается с уровня запуска 3 и выше. Как я могу остановить это, не используя update-rc.d foo stop 3 ., который (если я правильно понял) отключил бы службу при каждом изменении уровня запуска.

(т. е. если бы я был на уровне запуска 1 и включен foo, затем, когда я изменил уровень выполнения 3 он был бы отключен, нет?)

Запуск Debian GNU / Linux Lenny.


53
2018-06-26 20:21


Источник




Ответы:


Термин «stop» не препятствует запуску демона, а скорее закрывает его при вводе заданного уровня запуска.

Если вы просто хотите удалить службу / демон с одного уровня запуска, update-rc.d как указано, bei Freiheit или просто удалите символическую ссылку из /etc/rcX.d/, где X - ваш уровень запуска. Если вы не хотите, чтобы служба запускалась автоматически, update-rc.d -f foo remove будет делать трюк.


52
2017-07-09 12:56



Любые идеи, как это сделать на Debian 8? sudo update-rc.d -f sunrpc remove не работает; его все еще присутствует после перезагрузки. - jww
Debian 9 Это не работало для меня, а затем я понял, о дерп, мне нужно sudo. update-rc.d не дает обратной связи, если вы забыли sudo. Я подтвердил, что ссылки ушли с ls /etc/rc*.d - Jason Dunkelberger
Ошибка команды Ubuntu 16.04 - Stephane


Настройте приложения для запуска Linux с помощью sysv-rc-conf:

apt-get install sysv-rc-conf

Как указывали другие, здесь также обновление-rc.d для линии cmd.

Например, запустите

update-rc.d apache2 disable

для отключения apache2 со всех уровней запуска.


50
2018-06-26 23:28



отличный инструмент - не знал об этом. Благодаря! - PEra
обратите внимание, что это не остановит работу службы, чтобы добиться этого, чтобы добавить это: service foo stop или перезагрузить сервер - rubo77


Короткий:

Нет надежного способа сделать это быстро.

Длинный:

В текущем Debian (Debian unstable, начиная с 2012-06-01) в настоящее время нет надежного короткого пути для постоянного отключения службы / демона. - Поскольку обновление пакета daemon безоговорочно запускает «перезапуск /etc/init.d/package», он отключен для этого уровня запуска или нет.

Чтобы убедиться, что демон не запускается, вы можете:

  • удалить его
  • сделать локальный переадресацию сценария /etc/init.d/xyz (таким образом, никакие инструменты не найдут его)
  • использовать / злоупотреблять конфигурационный файл соответствующего пакета, чтобы спровоцировать ранний выход этого сценария (например, поставить «выход» в начале / etc / default / xyz в случае, если он получен из сценария инициализации)
  • загляните в этот скрипт для предопределенных «официальных» способов не запускать этот демон

Существует / был (?) Некоторый шаг init-policy-something для сценариев init в Debian, который должен был заполнить эту недостающую функциональность. - Я попытался использовать его, усложнил, нашел ошибку и никогда не касался ее снова.

Обновить:

Переключитесь на «systemd», альтернативу «initd». Существует debian-пакет, и вы можете отключить службу с чем-то вроде этого:

cd /etc/systemd/system
ln -s /dev/null xyz.service

12
2018-06-03 19:39



+1 Это такой полезный ответ - и если бы я этого не случилось, я бы был ужален позже - спасибо! - Jack Douglas
Можете ли вы просто unlink xyz.service также? - jaggedsoft
@NextLocal, я забыл, почему я это написал, но я считаю, что если служба имеет скрипты инициализации System V, systemd будут использовать их. - Таким образом, ссылка говорит, что не искать их. - Robert Siemer
Обратите внимание, что редактирование /etc/default/xyz файл для добавления exit не помешает пакету перезаписать файл с правильной версией при следующем обновлении. (Пакет сохраняет файлы конфигурации, и в большинстве случаев сценарии инициализации не рассматриваются как таковые.) Поэтому в большинстве случаев это не поможет. - Alexis Wilke


Запустить эту команду

apt-get install rcconf

После установки запустите rcconf в SSH, и вы получите диалоговое окно, отображающее все службы, установленные для запуска при загрузке. Выберите их, нажав «Пробел», чтобы отключить / включить конкретное, и все готово, просто нажмите «ОК», и эта служба не начнет снова запускаться при следующей загрузке. Использование этого в течение многих лет. Очень удобный инструмент для пользователей Debian / Ubuntu, таких как я.


4
2017-08-28 10:07



Легко, как 1,2,3! Спасибо за этот небольшой инструмент командной строки. - DanielaWaranie


Я смущен тем, чего вы пытаетесь достичь.

На каких уровнях запуска вы хотите запустить foo?

Если вы всегда хотите, чтобы он работал, используйте update-rc.d foo defaults; который остановит его в 0, 1 и 6, оставив его в 2, 3, 4 и 5. (1 не должен запускать ничего, кроме оболочки, 0 и 6 останавливаются и перезагружаются)

Если вы хотите точно указать, какие уровни запуска запускать:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .

2
2018-06-26 22:56





Я думаю, что это сработает: insserv -r foo


2
2017-11-15 01:36





Начните использовать insserv из Debian7

Выведите все службы и информацию об уровне выполнения

insserv --showall

Удалите перечисленные скрипты со всех уровней выполнения

insserv --remove [specify_script]

1
2018-03-14 17:45





Диспетчер загрузки Ubuntu является своего рода sysv-rc-conf легкий, более дружественная версия GUI, и многие люди, читающие эту тему, оценят это.

http://www.marzocca.net/linux/bum.html


0
2017-11-06 08:05