Quelle option ou commande systemctl
devrais-je utiliser pour afficher un résumé de tous les services actuellement en cours d'exécution?
Réponses
Trop de publicités?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
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.
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}'