Comando Systemctl para exibir um resumo dos serviços em execução

12

Qual systemctlopção ou comando eu usaria para exibir um resumo de todos os serviços atualmente em execução?

user4656368
fonte
Você deve aceitar a resposta de @Zanna. é muito mais abordar sua pergunta como a minha, mesmo que também seja uma abordagem válida.
Videonauth

Respostas:

20

Você pode usar algumas das systemctlopções de:

-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.

Então provavelmente você quer:

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

Que lista todos os serviços ativos, incluindo os que foram encerrados. Se você estiver atrás apenas dos que estão rodando neste momento, poderá usar:

systemctl --type=service --state=running list-units
Zanna
fonte
3
O systemctlcomando sem subcomandos assume list-units, então ... systemctl --type-service --state=running, ou apenas uma planilha systemctlpara uso rápido.
muru
11

É (veja man 1 systemctl):

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

ou (veja também man 8 service)

service --status-all

Onde [+]indica os serviços que estão realmente em execução.

Videonauth
fonte
4

Depois de procurar por mais tempo do que o necessário, criei esse método um pouco diferente de determinar os serviços em execução. Também mostra como contar o número de serviços em execução. Dessa forma, não é possível capturar acidentalmente algo com a palavra em execução ou serviço no próprio nome dos serviços.

# 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
fonte