Я ищу способ получить список всех сервисов (/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, которая предупредила бы меня, если служба больше не работает, которая должна быть запущена. Поскольку у нас есть много разных серверов для множества разных клиентов, на самом деле не требуется масштабировать список «важных» сервисов.
Вот моя острота 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
команды.
Все сервисы запускаются на запуске:
initctl list
Список всех сервисов, которые существуют в системе:
service --status-all
Перечислите все сервисы и соответствующее 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