Commande Systemctl pour afficher un résumé des services en cours d'exécution

12

Quelle systemctloption ou commande utiliser pour afficher un résumé de tous les services en cours d'exécution?

user4656368
la source
Vous devez accepter la réponse de @Zanna. cela répond beaucoup plus à votre question que la mienne, même si c'est aussi une approche valable.
Videonauth

Réponses:

20

Vous pouvez utiliser certaines des systemctloptions 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.

Alors probablement, vous voulez:

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

Qui répertorie tous les services actifs, y compris ceux qui ont quitté. Si vous ne cherchez que ceux qui courent en ce moment, vous pouvez utiliser:

systemctl --type=service --state=running list-units
Zanna
la source
3
La systemctlcommande sans sous-commande suppose list-units, donc ... systemctl --type-service --state=running, ou tout simplement une systemctlutilisation rapide.
muru
11

C'est (voir man 1 systemctl):

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

ou (voir aussi man 8 service)

service --status-all

Où le [+]indique les services en cours d'exécution.

Videonauth
la source
4

Après avoir cherché plus longtemps que nécessaire, j'ai trouvé cette méthode légèrement différente de déterminer les services en cours d'exécution. Il montre également comment compter le nombre de services en cours d'exécution. De cette façon, il n'est pas possible d'attraper accidentellement quelque chose avec le mot running ou service dans le nom du service lui-même.

# 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
la source