17 votes

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

Quelle option ou commande systemctl devrais-je utiliser pour afficher un résumé de tous les services actuellement en cours d'exécution?

26voto

Zanna Points 65764

Vous pourriez utiliser certaines des options de systemctl :

-t, --type=
       L'argument doit être une liste de types d'unités séparés par des virgules tels que
       service et socket.

       Si l'un des arguments est un type d'unité, lors de l'énumération des unités, limitez
       l'affichage à certains types d'unités. Sinon, des unités de tous types seront
       affichées.

       Dans un cas spécial, si l'un des arguments est help, une liste des
       valeurs autorisées sera imprimée et le programme se terminera.

   --state=
       L'argument doit être une liste de LOAD, SUB ou
       états ACTIF d'unité séparés par des virgules. Lors de l'énumération des unités, n'affichez que celles dans les
       états spécifiés. Utilisez --state=failed pour ne montrer que les unités en échec.

       Dans un cas spécial, si l'un des arguments est help, une liste des
       valeurs autorisées sera imprimée et le programme se terminera.

Donc probablement vous voudrez :

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

Ce qui liste tous les services actifs, y compris ceux qui sont sortis. Si vous ne recherchez que ceux qui fonctionnent en ce moment, vous pourriez utiliser :

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

12voto

Videonauth Points 31896

Il s'agit (voir man 1 systemctl) :

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

ou (voir également man 8 service)

service --status-all

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

6voto

Travis Runyard Points 101

Après avoir cherché plus longtemps que nécessaire, j'ai trouvé cette méthode légèrement différente pour déterminer les services en cours d'exécution. Cela montre également comment compter le nombre de services en cours d'exécution. De cette façon, cela garantit que nous ne capturons pas accidentellement quelque chose avec le mot en cours d'exécution ou service dans le nom du service lui-même. Bien que cette méthode puisse être astucieuse, elle vous oblige à en apprendre plus sur les expressions régulières et à profiter au mieux de ce que GNU/BSD a à offrir avec awk/sed.

# Afficher tous les services actifs :
systemctl -t service --state=active --no-pager --no-legend

# Compte de tous les services actifs :
systemctl -t service --state=active --no-pager --no-legend | grep -c -

# Afficher tous les services en cours d'exécution :
systemctl -t service --state=active --no-pager --no-legend | egrep '^*\.service.*running'

# Compte de tous les services en cours d'exécution :
systemctl -t service --state=active --no-pager --no-legend | egrep '^*\.service.*running' -c -

# Afficher uniquement le service et sa description :
systemctl -t service --state=active --no-pager --no-legend | egrep '^*\.service.*running' | awk 'BEGIN { FS = " ";} {for (i = 2; i <= 4; i++) { $i = "" }; print}'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X