Comment utiliser systemctl pour lister et gérer les services sous Linux : guide complet pour les débutants

目次

1. Introduction

Lorsque vous utilisez Linux, il existe de nombreuses situations où vous pourriez vouloir vérifier l’état des services ou lister tous les processus en cours d’exécution. Dans de tels cas, la commande systemctl est extrêmement utile.

Cette commande interagit avec « systemd », le système d’initialisation et le gestionnaire de services sur Linux, offrant un large éventail de fonctionnalités telles que la vérification de l’état des services (unités), le démarrage, l’arrêt, le redémarrage et la liste des services.

En particulier lorsqu’il s’agit de « lister avec systemctl », vous pouvez comprendre la structure de votre système sous différents angles — pas seulement les services actuellement actifs, mais aussi ceux inactifs ou les services configurés pour démarrer automatiquement.

Cette section présentera brièvement les bases de ce qu’est « systemctl », et expliquera ce que vous apprendrez dans cet article.

What is systemctl?

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

Par exemple, vous l’utilisez pour démarrer ou arrêter des services comme Apache (httpd) ou SSH, ou pour lister l’état de ces services.

Relationship Between systemd and systemctl

systemd est le système central pour les processus de démarrage et la gestion des services sur Linux, remplaçant les anciens outils tels que SysVinit et Upstart. systemctl est l’utilitaire en ligne de commande qui interagit directement avec systemd.

En d’autres termes, si systemd est le « contrôleur », alors systemctl agit comme l’« opérateur » qui envoie les instructions.

What You Will Learn in This Article

Cet article répond aux questions courantes suivantes :

  • Comment puis-je lister tous les services actuellement en cours d’exécution ?
  • Comment inclure les services inactifs dans la liste?
  • Comment vérifier quels services sont activés pour démarrer automatiquement?
  • Comment puis-je lire et interpréter les résultats?

Chaque exemple de commande et sa sortie sont soigneusement expliqués pour les débutants, n’hésitez donc pas à suivre jusqu’à la fin.

2. Comment lister les services avec systemctl

En administration système Linux, saisir rapidement la liste des services est essentiel. Avec la commande systemctl, vous pouvez facilement voir non seulement les services actifs, mais aussi les inactifs et ceux configurés pour démarrer automatiquement.

Ici, nous expliquerons trois points de vue principaux pour lister les services :

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

2.1 Lister les services actuellement actifs

Pour vérifier quels services sont « en cours d’exécution » sur votre système, utilisez cette commande de base :

systemctl list-units --type=service

Cette commande affiche une liste des services actuellement actifs (en cours d’exécution). La sortie comprend les colonnes suivantes :

Colonne

Description

UNITÉ

Nom du service (par ex. ssh.service)

Charger

Si le fichier d’unité est chargé

ACTIF

Statut du service (ex. actif, inactif, échoué)

SUB

Statut détaillé (ex. en cours, terminé, mort)

DESCRIPTION

Brève description du service

Ces informations vous aident à comprendre, par exemple, si nginx est actuellement en cours d’exécution ou quels services sont actifs.

2.2 Lister tous les services, y compris les inactifs

Par défaut, list-units n’affiche que services actuellement actifs. Pour inclure les services inactifs, ajoutez l’option --all :

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

Cette option vous permet de voir les services en état « inactif » ou ceux qui n’ont jamais été démarrés auparavant.

Si vous souhaitez affiner davantage les résultats, utilisez l’option --state= pour filtrer par statut spécifique :

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

Ceci est utile lorsque vous voulez vérifier uniquement les services arrêtés, par exemple.

2.3 Lister les fichiers d’unités de service

Si vous voulez connaître non seulement le statut actuel mais aussi quels services sont activés et configurés pour démarrer automatiquement, utilisez la commande suivante :

systemctl list-unit-files --type=service

Cela affiche une liste des fichiers d’unités de service (fichiers de configuration) et vous permet de vérifier leur statut d’activation/désactivation (activé, désactivé, etc.).

Valeur d’État

Description

activé

Activé automatiquement au démarrage

désactivé

Non activé au démarrage ; doit être démarré manuellement

static

Démarré en tant que dépendance d’autres unités ; ne peut pas être activé/désactivé directement.

Je suis désolé, mais je ne vois pas le fragment HTML que vous souhaitez traduire. Pourriez‑vous me le fournir ?

Explicitement désactivé et ne peut pas être démarré (protégé)

Examiner cette liste vous aide à comprendre visuellement quels services démarrent au démarrage et si certains ont été masqués accidentellement.

3. Gestion de base des services avec systemctl

La commande systemctl ne se contente pas de vérifier l’état du service, elle vous permet également de démarrer, arrêter, redémarrer, et d’activer ou désactiver les services. Voici les opérations de basequemment utilisées dans la gestion des systèmes Linux.

Maîtriser ces commandes est essentiel pour la gestion quotidienne des serveurs et le dépannage.

3.1 Démarrage d’un service

Pour démarrer manuellement un service spécifique, utilisez la sous‑commande start :

sudo systemctl start [service name]

Par exemple, pour démarrer Apache (httpd) :

sudo systemctl start httpd.service

Cela démarre le service immédiatement. Si vous souhaitez qu’il persiste après le redémarrage, utilisez également enable (expliqué ci‑dessous).

3.2 Arrêt d’un service

Pour arrêter un service, utilisez cette commande :

sudo systemctl stop [service name]

Exemple :

sudo systemctl stop sshd.service

Le service reste arrêté jusqu’à ce que vous le redémarriez explicitement.

3.3 Redémarrage d’un service

Pour redémarrer un service (par exemple, après des modifications de configuration), utilisez :

sudo systemctl restart [service name]

Exemple :

sudo systemctl restart nginx.service

Le redémarrage arrête toujours le service puis le relance, quel que soit son état actuel.

3.4 Vérification de l’état du service

Pour vérifier l’état détaillé d’un service, utilisez la sous‑commande status :

systemctl status [service name]

Exemple :

systemctl status mysql.service

Cela affiche l’état actif actuel, l’identifiant du processus (PID), un résumé des journaux, et plus encore — très utile pour le dépannage.

3.5 Activation d’un service au démarrage automatique

Pour garantir qu’un service démarre automatiquement au démarrage, utilisez la sous‑commande enable :

sudo systemctl enable [service name]

Exemple :

sudo systemctl enable docker.service

Désormais, le service se lancera automatiquement au prochain démarrage du système.

3.6 Désactivation d’un service au démarrage automatique

Pour désactiver le démarrage automatique, utilisez la commande disable :

sudo systemctl disable [service name]

Exemple :

sudo systemctl disable cups.service

Cela empêche le service de démarrer au démarrage.

3.7 Vérification de l’activation d’un service

Pour vérifier si un service est activé (démarre automatiquement), utilisez is-enabled :

systemctl is-enabled [service name]

Exemple de sortie :

enabled

Cela indique rapidement la politique de démarrage du service.

4. Options utiles et techniques avancées pour systemctl

La commande systemctl ne se limite pas aux opérations de démarrage/arrêt de base, elle prend également en charge des tâches de gestion avancées. Voici quelques options pratiques et techniques que vous devriez connaître.

Exploiter ces fonctionnalités peut grandement améliorer l’efficacité de la gestion des services Linux.

4.1 Liste des dépendances de service

Sous Linux, certains services dépendent d’autres unités (services, montages, cibles, etc.). Pour vérifier les dépendances, utilisez list-dependencies :

systemctl list-dependencies [service name]

Exemple :

systemctl list-dependencies nginx.service

Cette commande affiche les unités liées sous forme d’arborescence—utile pour analyser l’ordre de démarrage et les dépendances indirectes.

4.2 Affichage du contenu du fichier d’unité

Si vous souhaitez vérifier les détails de la configuration d’une unité, vous pouvez afficher le fichier d’unité réel :

systemctl cat [service name]

Exemple :

systemctl cat ssh.service

Cela montre le chemin du fichier et son contenu, vous permettant de voir rapidement les éventuels paramètres personnalisés.

4.3 Rechargement des fichiers d’unité

Si vous modifiez manuellement un fichier d’unité, utilisez daemon-reload pour appliquer les changements :

sudo systemctl daemon-reexec

Ou, plus couramment :

sudo systemctl daemon-reload

Cela recharge les fichiers d’unité dans systemd, de sorte que les modifications prennent effet. Si les paramètres ne semblent pas s’appliquer, essayez d’abord cette commande.

4.4 Vérification des journaux de service (Supplément)

Bien que ce ne soit pas une commande systemctl en soi, journalctl est utile pour consulter les journaux de service :

journalctl -u [service name]

Exemple :

journalctl -u docker.service

Cela vous permet d’examiner les erreurs de démarrage et l’historique des redémarrages—une étape essentielle de dépannage.

5. Problèmes courants et solutions

Lors de la gestion des services avec systemctl, les choses ne se passent pas toujours comme prévu. Cette section explique les problèmes courants et comment les résoudre.

Soyez prêt à « le service ne démarre pas » ou « impossible de trouver la cause » en connaissant ces étapes de dépannage de base.

5.1 Dépannage lorsqu’un service ne démarre pas

Vous pouvez voir des erreurs telles que :

Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.

Pour identifier la cause, suivez les étapes suivantes dans l’ordre :

  1. Vérifier le statut
   systemctl status [service name]
  1. Vérifiez les journaux d’erreurs
   journalctl -xe
  1. Recharger les fichiers d’unité
    Si vous venez d’éditer un fichier d’unité, rechargez avec:
   sudo systemctl daemon-reload
  1. Vérifier les conflits de port
    Vérifiez si un autre processus utilise déjà le port:
   sudo netstat -tulnp | grep [port number]

5.2 Comment lire les messages d’erreur dans la commande status

Lorsque vous exécutez systemctl status, vous voyez l’état du service ainsi que les messages de journal les plus récents. Par exemple :

● 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) since Fri 2025-04-18 12:00:00 JST; 5s ago
  Process: 12345 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)

Cela vous permet de repérer rapidement les échecs (par ex., « Active: failed », « status=1/FAILURE ») et quel processus a renvoyé une erreur.

La ligne Loaded indique le chemin du fichier d’unité, ce qui facilite l’identification du fichier de configuration à modifier.

5.3 Lorsque les services s’arrêtent de façon inattendue

Si un service démarre puis s’arrête immédiatement, les causes courantes incluent :

  • Erreurs dans les fichiers de configuration
  • Conflits de ports
  • Fichiers ou répertoires requis manquants
  • Permissions d’exécution insuffisantes

Pour résoudre, essayez ce qui suit :

  • Vérifiez et validez les fichiers de configuration (par exemple, nginx -t ou apachectl configtest)
  • Suivez les journaux détaillés avec journalctl -u [service name]
  • Assurez-vous que les répertoires requis (par ex., /var/run/xxx) existent ; créez-les si nécessaire

5.4 Impossible de démarrer les services en état masked

Si vous voyez cette erreur :

Failed to start example.service: Unit example.service is masked.

Le service est en état masked (complètement désactivé et bloqué pour le démarrage). Démasquez avec :

sudo systemctl unmask [service name]

Vous pouvez alors démarrer le service comme d’habitude.

6. Résumé

La gestion des services sous Linux est une partie essentielle des opérations quotidiennes du système. La commande systemctl joue un rôle central, vous permettant de consulter les listes de services et de les gérer efficacement.

Cet article a expliqué les points suivants en utilisant le mot‑clé « systemctl list » :

Ce que vous pouvez faire avec la commande systemctl (Récapitulatif)

  • Liste de contrôle des services
  • Afficher les services actuellement actifs (list-units --type=service)
  • Listez tous les services, y compris les services inactifs (options --all ou --state=)
  • Afficher les fichiers d’unité de service et leur état de démarrage (list-unit-files)
  • Opérations de base du service
  • Démarrer, arrêter, redémarrer et vérifier l’état (start / stop / restart / status)
  • Activer/désactiver le démarrage automatique (activer / désactiver / est activé)
  • Opérations avancées et dépannage
  • Vérifier les dépendances, afficher les fichiers unit, recharger les configurations
  • Investiguer les erreurs en utilisant les journaux et les vérifications d’état

Bonnes pratiques pour la gestion des services

  • Vérifiez toujours le statut avant d’apporter des modifications (status commande)
  • Connaître l’état de démarrage automatique (is-enabled commande)
  • Après avoir effectué des modifications, exécutez toujours daemon-reload
  • Pour les problèmes, vérifiez les journaux avec journalctl

Des vérifications minutieuses comme celles‑ci garantissent une prestation de services stable et un dépannage plus rapide dans l’administration système sous Linux.

Pour aller plus loin

Si vous souhaitez en savoir plus, envisagez d’explorer des sujets tels que :

  • cibles systemd (et différences par rapport aux niveaux d’exécution)
  • Tâches planifiées avec systemd-timer
  • Comment créer et gérer des fichiers d’unités personnalisés

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

Cette section résume les questions fréquemment posées et leurs réponses concernant la commande systemctl et la liste des services. Même si vous maîtrisez les bases, consultez‑les pour une référence rapide.

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

A1.
systemctl

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

A2.

  • list-units affiche unités actuellement chargées (actives ou précédemment utilisées).
  • list-unit-files énumère tous les fichiers d’unité et leur état d’activation/désactivation.
    Considérez cela comme la différence entre « ce qui fonctionne maintenant » et « ce qui est configuré pour fonctionner ».

Q3. Puis‑je démarrer un service en état “static” ?

A3.
Oui, vous pouvez manuellement start un service en état static, mais vous ne pouvez pas enable le faire démarrer automatiquement. En effet, les services statiques sont conçus pour être démarrés en tant que dépendances d’autres unités.

Q4. Je ne peux pas démarrer un service masqué. Que faire ?

A4.
masked signifie “completely disabled.” Démasquez avec:

sudo systemctl unmask [service name]

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

Q5. Existe‑t‑il une interface graphique pour lister l’état des services ?

A5.
Selon votre distribution, des outils comme gnome-system-monitor, KSysGuard ou Cockpit peuvent vous permettre de vérifier l’état des services via une interface graphique. Cependant, pour les opérations avancées, systemctl reste la méthode la plus fiable.

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

A6.
En général, placez‑les dans /etc/systemd/system/. Après modification, n’oubliez pas d’exécuter:

sudo systemctl daemon-reload

Puis gérez‑les comme d’habitude avec start ou enable.