Terminal Linux affichant la liste des services avec systemctl

Comment lister les services sous Linux et vérifier leur état

En résumé

  • Utilisez systemctl list-units –type=service –state=running pour lister les services en cours d’exécution.
  • Utilisez systemctl list-units –type=service –all pour afficher les unités chargées, y compris inactives ou en échec.
  • Utilisez systemctl list-unit-files –type=service pour inventorier les fichiers de services disponibles.
  • Un service enabled est configuré pour le démarrage automatique, mais il n’est pas forcément actif actuellement.

Sur un système Linux utilisant systemd, systemctl est la commande de référence pour lister les services. Utilisez list-units pour les unités chargées, --state=running pour les services en cours d’exécution et list-unit-files pour les fichiers disponibles ou activés au démarrage.


Quelle commande utiliser ?

Objectif Commande Ce qu’elle affiche
Services actifs systemctl list-units --type=service --state=active Les unités dont l’état global est actif.
Services en cours d’exécution systemctl list-units --type=service --state=running Les services actuellement exécutés.
Unités chargées systemctl list-units --type=service --all Les unités chargées, y compris inactives ou en échec.
Fichiers de services disponibles systemctl list-unit-files --type=service Les fichiers d’unités et leur état d’activation.
Services activés au démarrage systemctl list-unit-files --type=service --state=enabled Les services configurés pour être activés au démarrage.

Ces commandes ne décrivent pas la même réalité : un fichier disponible n’est pas forcément chargé ou lancé, et un service enabled n’est pas nécessairement actif au moment de la consultation.


Lister les services actifs et en cours d’exécution

Pour afficher les unités de type service dont l’état global est actif, utilisez :

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

Pour limiter la liste aux services en cours d’exécution, remplacez l’état par running :

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

active indique l’état global connu par systemd, tandis que running cible une unité dont le sous-état correspond à une exécution en cours. Un service actif n’est donc pas toujours un processus qui fonctionne continuellement.


Afficher les services inactifs ou en échec

Pour élargir la liste à toutes les unités de service chargées, ajoutez --all :

systemctl list-units --type=service --all

Cette commande permet de repérer les services inactifs (inactive) et ceux en échec (failed) qui ne figurent pas dans une vue limitée aux unités actives. L’état failed signifie que l’exécution de l’unité a rencontré un problème ; la commande indique l’échec, mais pas nécessairement sa cause.

Lire une ligne de sortie

sshd.service    loaded failed failed  OpenSSH server daemon

Dans cette sortie représentative, LOAD indique que la définition est chargée, ACTIVE donne l’état global et SUB fournit un état plus précis. Ici, failed signale que le service doit être examiné.


Lister les fichiers de services disponibles

Pour obtenir l’inventaire des fichiers d’unités présents sur le système, utilisez :

systemctl list-unit-files --type=service

list-unit-files affiche les fichiers de services disponibles et leur état d’activation, comme enabled ou disabled. À l’inverse, list-units porte sur les unités actuellement chargées par systemd.

  • Un fichier de service disponible existe sur le système.
  • Une unité chargée est connue par systemd pendant son fonctionnement.
  • Un service actif ou en cours d’exécution fonctionne selon son état courant.

La présence d’un fichier de service ne signifie donc pas que le service est lancé. Cette commande ne constitue pas non plus une liste des paquets installés.


Voir les services activés au démarrage

Pour afficher les services dont le fichier est configuré avec l’état enabled, utilisez :

systemctl list-unit-files --type=service --state=enabled

Cette commande liste les services activés au démarrage. Elle ne garantit pas qu’ils fonctionnent actuellement.

État Signification
active L’unité est considérée comme active par systemd.
running Le service est en cours d’exécution.
inactive L’unité n’est pas active actuellement.
failed L’unité a rencontré un échec.
enabled Le service est configuré pour être activé au démarrage.
disabled Le service n’est pas configuré pour être activé automatiquement.

Un service peut donc être enabled mais inactif, ou actif sans être configuré pour démarrer automatiquement.


Rechercher un service par son nom

Si vous ne connaissez qu’une partie du nom, utilisez un motif lors de la recherche des fichiers d’unités :

systemctl list-unit-files --type=service 'motif*'

Cette commande recherche des fichiers d’unités. Elle est différente de ps, top ou htop, qui affichent des processus en cours d’exécution et non nécessairement les services gérés par systemd.


Vérifier un service précis

Lorsque le nom de l’unité est connu, consultez son état avec :

systemctl status nom-du-service

systemctl status affiche l’état, le sous-état et des informations contextuelles utiles pour déterminer si l’unité est active, inactive ou en échec.

Pour consulter les journaux associés, utilisez :

journalctl -u nom-du-service.service

journalctl complète la commande status lorsqu’un service est marqué failed ou lorsque les événements liés à son démarrage doivent être examinés.


Identifier le service qui écoute sur un port

La liste systemd ne suffit pas toujours à identifier le programme qui utilise un port. Pour afficher les sockets en écoute et le processus associé, utilisez :

ss -ltnp

Cette commande fournit une vue des ports en écoute et des processus associés. Elle complète systemctl : un port et un processus ne constituent pas automatiquement une liste des unités systemd. Pour approfondir la vérification, consultez notre guide sur les ports ouverts sous Linux.


Commandes de gestion courantes

La demande porte surtout sur la consultation, mais ces commandes permettent d’agir sur un service déjà identifié :

sudo systemctl start nom-du-service
sudo systemctl stop nom-du-service
sudo systemctl restart nom-du-service
sudo systemctl reload nom-du-service
  • start démarre le service.
  • stop l’arrête.
  • restart le redémarre.
  • reload recharge sa configuration lorsque le service le permet.

Ces commandes relèvent de la gestion du service et ne remplacent pas les commandes de listing précédentes.


Si Linux n’utilise pas systemd

Les commandes exactes dépendent de la distribution et du système d’initialisation. Sur un système SysVinit, utilisez par exemple :

service --status-all
ls /etc/init.d

service --status-all affiche l’état des services gérés par les scripts hérités, tandis que /etc/init.d contient généralement ces scripts. Leur format et leur contenu peuvent varier selon la distribution.

Sur les environnements utilisant OpenRC, rc-status fournit la liste des services gérés. Sur un ancien environnement Upstart, initctl list permet d’afficher les tâches connues. Sur un système moderne utilisant systemd, commencez par systemctl.


Services, processus et paquets : ne pas confondre

Un processus est un programme en cours d’exécution en mémoire. Un service est une unité ou un mécanisme géré par le système d’initialisation : il peut lancer un ou plusieurs processus, mais les deux notions ne sont pas synonymes.

De même, systemctl list-unit-files affiche des fichiers d’unités et leur état d’activation. Ce n’est pas une liste des paquets installés ni de tous les logiciels présents sur le système.


Avis d’Expert

Pour obtenir une liste de services sous Linux, commencez par choisir la vue recherchée : services en cours d’exécution, unités chargées, fichiers disponibles ou services activés au démarrage. Sur un système utilisant systemd, systemctl répond à ces quatre besoins ; utilisez ensuite status et journalctl pour examiner une unité précise.

Nathan Belmont

Nathan Belmont

Je suis un expert en systèmes d’exploitation (Windows, macOS/iOS, Linux, Android) ainsi qu’en logiciels et matériel informatique. Je propose des tutoriels clairs et pratiques pour résoudre les problèmes du quotidien, des imprimantes aux smartphones.