Liste des services systemctl expliquée : comment afficher, gérer et dépanner les services Linux

目次

1. Introduction

Lorsque vous utilisez Linux, il existe de nombreuses situations où vous souhaitez vérifier l’état des services ou afficher une liste des processus en cours d’exécution. Dans ces cas, la commande systemctl est extrêmement utile.

Cette commande fonctionne avec systemd, le système de démarrage et le gestionnaire de services utilisé dans les distributions Linux modernes. Elle offre un large éventail de fonctions, notamment la vérification de l’état d’un service (unité), le démarrage, l’arrêt, le redémarrage des services et l’affichage des listes de services.

Du point de vue d’une « liste de services systemctl », vous pouvez non seulement voir les services actuellement actifs, mais aussi les services désactivés et ceux configurés pour un démarrage automatique, ce qui vous permet de comprendre la configuration globale du système sous plusieurs angles.

Ce chapitre explique brièvement ce qu’est systemctl et décrit ce que vous apprendrez dans cet article.

Qu’est‑ce que systemctl ?

systemctl est l’outil standard pour contrôler et inspecter les différentes « unités » telles que les services, les cibles et les points de montage sur les distributions Linux basées sur systemd.

Par exemple, il sert à démarrer ou arrêter des services comme Apache (httpd) et SSH, ainsi qu’à afficher leur état sous forme de liste.

La relation entre systemd et systemctl

systemd est le mécanisme central responsable du processus de démarrage de Linux et de la gestion des services, remplaçant les anciens systèmes tels que SysVinit et Upstart. L’outil en ligne de commande utilisé pour interagir avec systemd est systemctl.

En d’autres termes, si systemd est le centre de commande, systemctl agit comme l’opérateur qui délivre les instructions.

Ce que vous apprendrez dans cet article

Cet article répond aux questions suivantes :

  • Comment afficher une liste des services actuellement en cours d’exécution ?
  • Comment afficher tous les services, y compris les inactifs ?
  • Comment vérifier si un service démarre automatiquement au démarrage du système ?
  • Comment interpréter la sortie des listes de services ?

Pour garantir la clarté pour les débutants sous Linux, des exemples de commandes et des explications détaillées des sorties sont fournis.

2. Comment afficher une liste de services avec systemctl

En administration système Linux, comprendre rapidement la liste des services est extrêmement important. En utilisant la commande systemctl, vous pouvez facilement vérifier les services actifs, les services inactifs et les paramètres de configuration de démarrage.

Cette section explique les méthodes d’affichage des services sous les trois angles suivants :

  • Liste des services actifs
  • Liste de tous les services (y compris les inactifs)
  • Liste des fichiers d’unité de service (y compris les paramètres de démarrage)

2.1 Affichage de la liste des services actuellement actifs

Pour vérifier les services qui sont en cours d’exécution, utilisez la commande suivante :

systemctl list-units --type=service

Cette commande affiche une liste des services actifs. La sortie comprend les champs suivants :

FieldDescription
UNITService name (e.g., ssh.service)
LOADWhether the unit file is loaded
ACTIVEService state (e.g., active, inactive, failed)
SUBMore detailed status (e.g., running, exited, dead)
DESCRIPTIONService description

Ces informations vous permettent de déterminer, par exemple, si nginx est en cours d’exécution ou quels services sont actuellement actifs.

2.2 Affichage de tous les services, y compris les inactifs

Par défaut, list-units ne montre que les services actifs. Pour inclure les services inactifs, ajoutez l’option --all.

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

Cela affiche les services inactifs ainsi que ceux qui n’ont jamais été démarrés.

Vous pouvez filtrer davantage les résultats par état du service à l’aide de l’option --state= :

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

Ceci est utile lorsque vous ne souhaitez afficher que les services arrêtés.

2.3 Visualisation de la liste des fichiers d’unité de service

Pour vérifier quels services sont activés ou désactivés au démarrage, utilisez la commande suivante :

systemctl list-unit-files --type=service

Cette commande affiche tous les fichiers d’unité de service ainsi que leurs états activés ou désactivés.

STATEDescription
enabledAutomatically starts at boot
disabledDoes not start automatically
staticCannot be enabled or disabled manually
maskedExplicitly disabled and cannot be started

Cette liste vous aide à comprendre visuellement quels services démarrent au boot et à identifier les services masqués par erreur.

3. Gestion de base des services avec systemctl

La commande systemctl vous permet de démarrer, arrêter, redémarrer les services et de configurer leur comportement au démarrage.

3.1 Démarrer un service

sudo systemctl start service-name

Exemple :

sudo systemctl start httpd.service

3.2 Arrêter un service

sudo systemctl stop service-name

Exemple :

sudo systemctl stop sshd.service

3.3 Redémarrer un service

sudo systemctl restart service-name

Exemple :

sudo systemctl restart nginx.service

3.4 Vérifier le statut du service

systemctl status service-name

Exemple :

systemctl status mysql.service

3.5 Activer le démarrage automatique

sudo systemctl enable service-name

Exemple :

sudo systemctl enable docker.service

3.6 Désactiver le démarrage automatique

sudo systemctl disable service-name

Exemple :

sudo systemctl disable cups.service

3.7 Vérifier le statut du démarrage

systemctl is-enabled service-name
enabled

4. Options utiles de systemctl et techniques avancées

4.1 Lister les dépendances d’un service

systemctl list-dependencies service-name

4.2 Voir le contenu du fichier d’unité

systemctl cat service-name

4.3 Recharger les fichiers d’unité

sudo systemctl daemon-reexec
sudo systemctl daemon-reload

4.4 Voir les journaux du service

journalctl -u service-name

5. Problèmes courants et dépannage

5.1 Lorsqu’un service ne démarre pas

systemctl status service-name
journalctl -xe

5.2 Comprendre les messages d’erreur dans la sortie de status

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code)

5.3 Services qui s’arrêtent immédiatement après le démarrage

  • Erreurs de configuration
  • Conflits de ports
  • Fichiers ou répertoires manquants
  • Permissions insuffisantes

5.4 Lorsqu’un service est masqué

sudo systemctl unmask service-name

6. Résumé

La gestion des services est une partie essentielle des opérations système Linux, et systemctl joue un rôle central dans le contrôle et la compréhension des services système.

7. Questions fréquemment posées (FAQ)

Cette section répond aux questions courantes sur systemctl et la gestion des services.

Q1. Quelle est la différence entre systemctl et la commande service ?

A1.
systemctl est une commande de gestion des services conçue pour les systèmes basés sur systemd et constitue l’outil standard utilisé par la plupart des distributions Linux modernes telles qu’Ubuntu, CentOS et Fedora.
En revanche, la commande service était utilisée avec les anciens systèmes basés sur SysVinit. Bien qu’elle puisse encore exister pour des raisons de compatibilité, l’utilisation de systemctl est fortement recommandée dans les environnements systemd.

Q2. Quelle est la différence entre list-units et list-unit-files ?

A2.

  • list-units affiche les unités actuellement chargées, c’est‑à‑dire les services qui sont en cours d’exécution ou qui ont été utilisés récemment.
  • list-unit-files affiche tous les fichiers d’unité et leur statut d’activation (activé, désactivé, etc.). En bref, l’un montre ce qui est actuellement actif, tandis que l’autre montre comment les services sont configurés.

Q3. Les services en état statique peuvent-ils être démarrés ?

A3.
Oui, les services en état static peuvent être démarrés manuellement avec start. Cependant, ils ne peuvent pas être activés pour un démarrage automatique au démarrage.
Cela est dû au fait que les services statiques sont conçus pour être démarrés en tant que dépendances d’autres unités.

Q4. Un service est masqué et ne peut pas être démarré. Que faire ?

A4.
Un service masked est complètement désactivé et ne peut pas être démarré. Pour résoudre cela, démasquez le service en utilisant la commande suivante :

sudo systemctl unmask service-name

Après le démasquage, vous pouvez démarrer le service normalement.

Q5. Existe-t-il une méthode GUI pour voir le statut d’un service ?

A5.
Selon la distribution, des outils tels que gnome-system-monitor, KSysGuard ou Cockpit vous permettent de visualiser l’état des services via une interface graphique.
Cependant, pour des opérations avancées comme activer ou désactiver des services au démarrage, systemctl reste la méthode la plus fiable.

Q6. Où placer les fichiers d’unité personnalisés ?

A6.
Les fichiers d’unité personnalisés sont généralement placés dans /etc/systemd/system/. Après avoir modifié ou ajouté un fichier d’unité, exécutez toujours la commande suivante :

sudo systemctl daemon-reload

Vous pouvez ensuite gérer le service normalement avec start ou enable.