Перечислите все службы, начинающиеся при загрузке

Я ищу способ получить список всех сервисов (/etc/init.d или upstart или systemd), которые должны запускаться (или запускаться) при загрузке.

Как получить список всех стартовых служб? - я знаю этот вопрос, и он предлагает использовать service --status-all.

Но это не показывает мне, какие службы ДОЛЖНЫ БЫТЬ РАБОТАЮТ . Он вызывает все сценарии инициализации с аргументом «status». Это список всех служб, которые могут быть запущены.

Но я хотел бы знать, если служба, запущенная при загрузке, все еще работает.

Пример ...

У меня установлены webfs. Но я не хочу, чтобы он работал при загрузке. Таким образом я отключил это: sudo update-rc.d webfs disable. И у меня также установлена ​​Samba, и она должна работать при загрузке. Но это остановлено (по любой причине). sudo service --status-all мне здесь не помогает:

$ sudo service --status-all 2>/dev/null | grep -E 'samba$|webfs'
 [ - ]  samba
 [ - ]  webfs

Оба выключены, но я не понимаю, что один (самба) должен быть включен.

Итак ...

Как я могу получить список всех служб, которые запускаются при загрузке? И, как расширение, есть простой способ получить «статус» эти службы (если нет, я просто переберу этот список и запущу «service $ service status» или что-то в этом роде).

Спасибо, Александр

Редактировать 2015-05-04: Я нахожусь на Ubuntu 14.04.

Основное внимание в этом вопросе уделяется следующему:

Но я хотел бы знать, если служба, которая была запущена при загрузке, все еще работает. [ 1 133]

Из-за этого initctl list мало помогает. На самом деле он не учитывает сервисы, запускаемые скриптами /etc/init.d (по сравнению со скриптами выскочки в /etc/init).

Также список /etc/rc?.d/S* не помогает. Это создаст список служб, которые могут быть запущены на заданном уровне выполнения. Это не показывает мне, если служба, которая должна была быть запущена, все еще работает.

По сути, я ищу что-то вроде svcs -x от Solaris для Ubuntu. С svcs -x я бы получил вывод, если служба, которая была запущена, больше не работает. Это нужно и для Ubuntu.

Причина: я хотел бы иметь (более или менее ...) общую проверку для нашей системы мониторинга Icinga / Nagios, которая предупредила бы меня, если служба больше не работает, которая должна быть запущена. Поскольку у нас есть много разных серверов для множества разных клиентов, на самом деле не требуется масштабировать список «важных» сервисов.

13
задан 13 April 2017 в 15:24

3 ответа

Вот моя острота grep -i 'runlevel' /etc/init/* | awk '!/#/ && /start on/ && /2/ {gsub("/"," "); print $0 }' | cut -d ' ' -f4-

Немного более чистый вывод может быть достигнут с grep -i 'runlevel' /etc/init/* | awk '/start on/ && /2/ {gsub("/"," "); gsub(":", " ");gsub(".conf"," "); print $3 }'

Теперь позволяет, входят в детали. Новомодные задания все хранятся в /etc/init/ , право? Задания там, у всех есть строки, указывающие, в котором runlevel они запускают. Runlevel 2 является нормальной начальной загрузкой, значение по умолчанию runlevel. Таким образом, если мы grep все строки, которые говорят runlevel и чистый вывод grep с awk для соответствия только строкам start on и runlevel № 2, мы получаем список новомодных заданий. Остальное только для форматирования потребностей, замена / в именах файлов, чтобы расположить с интервалами, и срезать путь к тем файлам, оставляя сами имена файлов.

!/#/ часть должна обратиться возможно прокомментированный, запускают директивы, которые я лично добавил вручную.

Среди прочего, существует /etc/rc2.d где (если я понимаю правильно) у Вас есть меньшие приоритетные сценарии.

Сырая острота для этого: ls /etc/rc2.d/* | grep S | awk '{sub("S"," "); print $2}

Сценарии, которые в той папке, которые на самом деле работают на runlevel 2, называет, начиная с S и сопровождает приоритетное число. Теперь, в основном, мы получаем все файлы, запускающиеся с S, и просто перечисляем их только с приоритетным именем (все еще должны выяснить, как очистить это).

Как muru правильно указанный в комментариях, существует также /etc/init/*.override файлы, которые могут ".. .modify, как задание будет работать, не имея необходимость изменять его конфигурационный файл непосредственно" (init страница справочника)

В текущий момент, так как у меня нет большого опыта с этими файлами, я могу только предложить просмотреть те .override файлы при помощи 'grep 'руководство'/etc/init / *.override' для списка сервисов, которым говорят быть запущенными вручную с initctl или services команды.

2
ответ дан 14 April 2017 в 01:24

Все сервисы запускаются на запуске:

initctl list

Список всех сервисов, которые существуют в системе:

service --status-all
16
ответ дан 14 April 2017 в 01:24

Перечислите все сервисы и соответствующее runlevel состояние - chkconfig стиль:

# sysv-rc-conf --list

acpid        2:on       3:on    4:on    5:on
apache-htcac 0:off      1:off   2:off   3:off   4:off   5:off   6:off
apache2      0:off      1:off   2:on    3:on    4:on    5:on    6:off

Интерактивное основанное на тексте редактирование всех перечисленных:

# sysv-rc-conf

l SysV Runlevel Config   -: stop service  =/+: start service  h: help  q: quit qk
x 
x service      1       2       3       4       5       0       6       S 
x ----------------------------------------------------------------------------
x acpid       [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x apache-ht$  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x apache2     [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x
x Use the arrow keys or mouse to move around.      ^n: next pg     ^p: prev pg
x                        space: toggle service on / off

, Возможно, Придется установить его если не там:

apt install sysv-rc-conf
2
ответ дан 14 April 2017 в 01:24

Другие вопросы по тегам:

Похожие вопросы: