Список усіх послуг, що починаються при завантаженні


15

Я шукаю спосіб отримати список усіх служб (/etc/init.d або upstart або systemd), які повинні бути запущені (або були запущені в) завантаження.

Як отримати список усіх стартових послуг? - Я це питання знаю, і воно пропонує використовувати service --status-all.

Але це не показує мені, які сервіси ПОДАЧАЮТЬСЯ РОБИТИ . Він викликає всі сценарії init statusаргументом " ". Це перелік усіх служб, які могли працювати.

Але я хотів би знати, якщо служба, запущена під час завантаження, все ще працює.

Приклад ...

У мене встановлено webfs. Але я не хочу, щоб це було запущено під час завантаження. Таким чином , я відключив його: sudo update-rc.d webfs disable. А також у мене встановлена ​​самба, і вона повинна працювати під час завантаження. Але це зупиняється (з будь-якої причини). 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.

Основним напрямком цього питання є наступне:

Але я хотів би знати, якщо служба, запущена під час завантаження, все ще працює.

Через це initctl listне дуже допомагає. Він насправді не враховує послуги, запущені /etc/init.dскриптами (порівняно з початковими сценаріями в /etc/init).

Також список /etc/rc?.d/S*не допомагає. Це створило б список послуг, які могли бути запущені в заданому рівні. Це не показує мені, якщо служба, яка мала бути запущена, все ще працює.

В основному, я шукаю щось на зразок svcs -xSolaris для Ubuntu. З svcs -x, я отримав би висновок, якщо служба, яка була запущена, більше не працює. Це мені також знадобиться Ubuntu.

Причина: Я хотів би провести (більш-менш ...) загальну перевірку нашої системи моніторингу Icinga / Nagios, яка б попередила мене, якщо служба більше не працює, яка повинна працювати. Оскільки у нас є багато різних серверів для самих різних клієнтів, це не дуже масштабне визначення списку "важливих" послуг.


Яка версія Ubuntu?
AB


@Parto Прийнята відповідь у цьому запитанні полягає в тому, initctl listщо перераховані процеси, які починаються / запущені, але цей список також буде включати процеси, які запускаються вручну
Сергій Колодяжний,

@AB Я на Ubuntu 14.04.
Олександр Сквавар

@Parto askubuntu.com/questions/218/… не зовсім дає відповідь. Як писав @Serg, відповідь було використати initctl list. Але це насправді не відповідає на це, як це також показало б запущені вручну служби. І не показує послуги, які не працюють.
Олександр Сквавар

Відповіді:


19

Усі сервіси запускаються при запуску:

initctl list

Перелік усіх послуг, які існують у системі:

service --status-all

Неправильно. Не надайте список увімкнених служб (запускається при запуску). Вони показують усі відомі сервіси (деякі з яких можуть бути відключені) та незалежно від того, запущені чи ні (що не означає, що вони запускаються автоматично).
Reinier Post

2

Ось мій oneliner 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 2 - це звичайний завантажувальний, за промовчанням рівень. Отже, якщо ми перетягуємо всі рядки, які говорять, runlevelі очищаємо вихід grep з awk, щоб відповідати лише рядкам з start onта рівнем №2, ми отримуємо список завдань на початку. Решта - лише для формулювання потреб, заміни / в іменах файлів на простір та скоротіть шлях до цих файлів, залишаючи самі імена файлів.

!/#/Частина за адресою , можливо , закоментувавши стартові директиви, які я особисто доданих вручну.

Крім усього іншого, є /etc/rc2.dде (якщо я правильно розумію) сценарії з меншим пріоритетом.

Сирий однопластовий для цього: ls /etc/rc2.d/* | grep S | awk '{sub("S"," "); print $2}

Сценарії, які в тій папці, яка насправді працює на рівні 2, мають ім'я, починаючи з S, а потім - номер пріоритету. Тепер, в основному, ми отримуємо всі файли, починаючи з S, і просто перелічуємо їх лише з пріоритетним іменем (все-таки треба з’ясувати, як очистити це).

Як правильно зазначав Муру в коментарях, є також /etc/init/*.overrideфайли, які можуть "... змінити, як буде виконуватися завдання без необхідності змінювати конфігураційний файл безпосередньо" ( init manpage )

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


Зауважте, що через залежність від подій не можна легко визначити, чи дана послуга призведе до запуску інших служб. Там також є невелика справа .overrideфайлів.
муру

@ Сергій дякую. Але це стосується лише початкових речей. Також "ls /etc/rc2.d/* ..." не дуже допомагає. Це показало б, які послуги могли бути запущені. Але не відображається, які служби все ще запущені. Я здогадуюсь, головний пункт мого поста не був зрозумілий. Я шукаю: Але я хотів би знати, якщо служба, запущена при завантаженні, все ще працює. Не знаю, чи знаєте ви Соларіс. Там я просто зробив "svcs -x", і якщо він щось повертає, я знаю, що щось не працює. Мені потрібно щось подібне для Ubuntu.
Олександр Сквавар

Добре можна написати сценарій або функцію bashrc для порівняння результатів мого одного вкладиша та списку initctl. Хочете, щоб я це написав?
Сергій Колодяжний

@Serg добре - якщо ви пропонуєте;)
Олександр Сквар

2

Перелічіть усі служби та відповідний стан запуску - стиль 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.