Команда Systemctl для отображения сводки запущенных служб

12

Какую systemctlопцию или команду я бы использовал для отображения сводки по всем работающим в данный момент службам?

user4656368
источник
Вы должны принять ответ @Zanna. это гораздо больше относится к вашему вопросу, как мой, даже если это правильный подход.
Видеонавт

Ответы:

20

Вы можете использовать некоторые из systemctlпараметров:

-t, --type=
       The argument should be a comma-separated list of unit types such as
       service and socket.

       If one of the arguments is a unit type, when listing units, limit
       display to certain unit types. Otherwise, units of all types will
       be shown.

       As a special case, if one of the arguments is help, a list of
       allowed values will be printed and the program will exit.

   --state=
       The argument should be a comma-separated list of unit LOAD, SUB, or
       ACTIVE states. When listing units, show only those in the specified
       states. Use --state=failed to show only failed units.

       As a special case, if one of the arguments is help, a list of
       allowed values will be printed and the program will exit.

Так что, вероятно, вы хотите:

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

Который перечисляет все активные сервисы, включая те, которые вышли. Если вы только после тех, кто работает в данный момент, вы можете использовать:

systemctl --type=service --state=running list-units
Занна
источник
3
Команда systemctlбез каких-либо подкоманд предполагает list-units, так что ... systemctl --type-service --state=running, или просто systemctlдля быстрого использования.
Муру
11

Это (см. man 1 systemctl):

systemctl list-units | grep -E 'service.*running'

или (см. также man 8 service)

service --status-all

Где [+]указывает службы, которые на самом деле работают.

Videonauth
источник
4

Посмотрев вокруг дольше, чем нужно, я пришел к этому немного другому методу определения запущенных сервисов. Также показано, как подсчитать количество запущенных сервисов. Этот способ гарантирует, что он не случайно поймает что-либо с помощью слова running или service в самом имени службы.

# Output all active services:
systemctl -t service --state=active --no-pager --no-legend

# Count of all active services:
systemctl -t service --state=active --no-pager --no-legend | grep -c -

# Output all running services:
systemctl -t service --state=active --no-pager --no-legend | egrep '^*\.service.*running'

# Count of all running services:
systemctl -t service --state=active --no-pager --no-legend | egrep '^*\.service.*running' -c -

# Output only the service and its description:
systemctl -t service --state=active --no-pager --no-legend | egrep '^*\.service.*running' | awk 'BEGIN { FS = " ";} {for (i = 2; i <= 4; i++) { $i = "" }; print}'
Sysinfo.io
источник