Як перелічити всі включені послуги з systemctl?


279

Як я можу перерахувати всі enabledпослуги systemctl?

Я знаю, що запущена systemctlкоманда сама по собі перераховує всі служби, але хотіла б отримати лише enabledті.


що ви маєте на увазі під включеним? Ви маєте на увазі послуги, які працюють?
Ген

7
@Gen включення послуги сильно відрізняється від її запуску. Див man systemctl.
Джос

Захоплююче. Відповідь з найнижчою оцінкою є найбільш "правильною" відповіддю, хоча вона, очевидно, не найкраща відповідь. Це відмінне запитання (та його відповіді) є цікавим прикладом того, як systemd порушує давні (та блискучі) принципи дизайну Unix & Co. / systemctl може робити саме те, що він хоче (більшість досвідчених користувачів просто вважатимуть це повною мірою). Я починаю чіткіше розуміти, чому Лінус Торвальдс так жорстоко критикує системних.
BISI

Відповіді:


411

systemctl list-unit-files | grep enabledперерахує всі включені .

Якщо ви хочете , які з них в даний час працює , вам потрібно systemctl | grep running.

Використовуйте той, який шукаєте. Увімкнено, не означає, що він працює. А біг не означає, що він включений. Це дві різні речі.

Увімкнено означає, що система запустить послугу при наступному завантаженні. Тож якщо ви ввімкнули послугу, її все одно потрібно запустити вручну, або перезавантажити, і вона запуститься.

Запуск означає, що він насправді працює зараз, але якщо його не ввімкнено, він не перезапуститься при перезавантаженні.


5
дратівливо потрібно використовувати зовнішній інструмент (греп), щоб показати цю життєво важливу інформацію. Але дякую, що показали нам дорогу :)
Феліпе Альварес

34
@FelipeAlvarez Правильно. Але так працює Linux. Багато невеликих бінарних файлів, які добре працюють між собою. systemctl робить те, що запитується, перераховує служби. Немає вбудованої в systemctl команди фільтрації, оскільки grep вже існує і може це добре робити з результатами будь-якої програми. Так завжди було :)
Доріан

3
Я згоден і так має бути. Але, systemd вже намагається зробити так багато, що мені цікаво, чому він не може перелічити включені служби?
Феліпе Альварес

5
systemctl | grep runningне перераховуйте мені нічого! Навіть якщо щось працює, перераховано лише його статус:enabled, disabled, masked, static
Cirelli94

27
Simpler:systemctl list-unit-files --state=running
Буде чи

93

man systemctl констатує:

--state=

Аргумент повинен бути коми список одиничних LOAD, SUBабо ACTIVEстанів. Перераховуючи одиниці, показуйте лише ті, які є у зазначених станах. Використовуйте --state=failedдля показу лише несправних одиниць.

Пояснення:

LOAD: Відображає, чи правильно було завантажено визначення одиниці.
ACTIVE: Стан активації блоку високого рівня, тобто узагальнення SUB.
SUB: Стан активації низького рівня, значення залежать від типу одиниці.

Хоча ви також можете використовувати це для показу лише enabledодиниць із:

systemctl list-unit-files --state=enabled

Якщо блок є, enabledце означає, що система запустить його при запуску. Хоча налаштування чогось enabledнасправді також startне так, вам потрібно буде зробити це вручну або перезавантажити систему після встановлення enabled.


5
Щоб увімкнути та почати одночасно:systemctl enable --now ...
Aurélien Ooms

1
--state=enabledне впливає на системну версію 215 (на Raspbian 8 Jessie), але вона працює на системній версії 229 (на Ubuntu 16.04.03 Xenial).
mpb

@mpb: Але він працює чудово у версії 235 в Arch Linux.

64

Щоб перелічити всі systemdпослуги, які є у state=activeтаsub=running

systemctl list-units --type=service --state=running

Щоб перелічити всі systemdсерійні сервіси, які перебувають у state=activeпідпорядкуванні, або запущені, або запущені

systemctl list-units --type=service --state=active

12

Щоб побачити "включені" служби, включаючи ці, які все ще знаходяться на стадії запуску / запуску:

systemctl list-unit-files --type service --state enabled,generated

Щоб переглянути всі запущені послуги, виконайте наведені нижче дії.

systemctl list-units --type service --state running

На жаль, назви служб можуть бути різними у двох списках - наприклад, sshdпроти sshта syslogпроти rsyslog.
OrangeDog

Єдина правильна відповідь "non grep". Хоча не впевнений, чому згадується на початку ...
rogerdpack

2

Також огляд усіх активних та несправних служб:

systemctl list-units --type service --state running,failed
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.