Menu Fermer

Systemctl Linux : utilisation et exemples

La commande systemctl fait partie du démon systemd.
systemd est couramment utilisé dans les nouvelles distributions de systèmes basées sur Linux pour gérer les services du système.
Le daemon systemd a été conçu pour remplacer le démon init en offrant une meilleure efficacité de gestion des services.

Pour modifier le statut des services, comme démarrer, arrêter ou redémarrer des services ou encore modifier la configuration d’un service, on utilise la commande systemctl.

Dans ce tutoriel, je vous donne tous les exemples d’utilisation de la commande systemctl Linux.

Systemctl Linux : utilisation et exemples

Comment utiliser systemctl sur Linux

Au besoin, pour comprendre le fonctionnement des services systemd sur Linux :

Voici la syntaxe de la commande systemctl :

systemctl [commande] [Nom service]

La liste des commandes possibles :

CommandesDescription
list-unitsLister les unités systemd
startDémarrer un service
stopArrêter un service
maskMasquer un service
statusVérifier le statut du service
restartRedémarrer le service
reloadRecharger un ou plusieurs services
reload-or-restartRecharger le service sinon le redémarrer
try-restartRedémarre le service si actif
killEnvoie un signal aux processus de l’unité/service comme la commande kill
Utilisez –kill-who= pour sélectionner à quel processus envoyer le signal
Utilisez –signal= pour sélectionner le signal à envoyer
daemon-reloadRecharger la configuration des services
reload-or-restartRecharger une ou plusieurs unités s’ils le soutiennent
is-activeVérifie si le service/unité est actif
is-failedVérifie si le service a le statut failed
showAffiche la configuration et les propriétés d’une unité/service
editEditer le fichier de configuration de l’unité/service
cleanNettoyer les runtime, cache, state, logs ou configuration de l’unité
Les principales commandes sur les unités/services de systemctl

Plus de commandes avec :

systemctl --help

Systemd utilise un concept d’unit, qui peut être un service, sockets, point de montage, périphériques, etc.
Les fichiers de configuration sont stockés dans /lib/systemd/system/

Pour plus de détails, suivez ce tutoriel :

Systemctl Linux : utilisation et exemples

Comment lister tous les services avec leurs statuts

La commande systemctl permet d’interroger systemd afin de connaître la liste des unités (dont les services) et leurs états.
Pour lister tous les unités quelques soit le type, on utilise le paramètre list-units :

systemctl list-units 

Si l’on veut filtrer la liste par type (services, socket, …), on utilise le paramètre –type.
Par exemple pour lister les services systemd :

systemctl list-units --type service

Voici le contenu de la sortie :

  • UNIT : Le nom de l’unité
  • LOAD : Si le fichier de configuration de l’unité a été chargé avec susccès
  • ACTIVE : Etat du service actif/inactif
  • SUB : Sous-état de l’unité qui varie selon le type d’unité
  • DESCRIPTION : La description du service
Lister et afficher le statut des services Linux avec systemctl

Ce tableau récapitule les états possibles d’une unité et d’un service :

StatutDescription
loadedLe fichier de configuration de l’unité a été traité et traité avec succès.
Active (exited)Exécuté avec succès la configuration ponctuelle et après l’exécution, l’appareil n’exécute ni le processus actif ni l’attente d’un événement.
Active (running)Exécutez avec succès la configuration ponctuelle et après l’exécution, l’appareil exécute un ou plusieurs processus actifs.
Active (waiting)Exécuté avec succès la configuration unique et après l’exécution, l’appareil attend un événement.
Inactive (dead)Soit la configuration ponctuelle n’a pas réussi à exécuter ou non exécuté.
Les états (states) de systemd

Pour filtrer sur un état, on utilise le paramètre –state :

systemctl list-units --all --state=inactive

Pour lister tous les services quelque soit leurs états :

systemctl list-unit-files --type service -all
Lister et afficher le statut des services Linux avec systemctl
  • UNIT File : qui est le fichier de l’unité, ici on filtre sur le type service, ainsi on a que des fichiers XXXXX.service
  • STATE : l’état du service (voir tableau ci-dessous)
  • VENDOR PRESET : la configuration par défaut

Comment afficher le statut d’un service : démarré, arrêté, failed

Comment savoir si un service est démarré, en cours de fonctionnement ou arrêté ?
Pour vérifier, systemctl fournit l’option statuts :

systemctl status [Nom service] 

Pour vérifier si un service a le statut actif et démarré :

systemctl is-active [Nom service]
Comment afficher le statut d'un service : démarré, arrêté, failed

Comment afficher la configuration d’un service avec systemctl

systemctl est aussi capable d’afficher les propriétés d’une unité et d’un service.
Pour cela on utilise la commande show comme ceci :

systemctl show [Nom service]

Par exemple pour afficher les propriétés du service cron :

systemctl show cron

La sortie affiche les propriétés et la configuration complète en liste.

Comment afficher la configuration d'un service avec systemctl

Comment démarrer, arrêter, recharger, redémarrer un service avec systemctl

La principale utilisation de systemctl dans la gestion des services est de changer le statut d’un service.
C’est à dire démarrer ou arrêter un service ou encore le redémarrer.

On utilise les trois commandes suivantes :

  • start : démarre un service
  • stop : arrête un service
  • restart : redémarre un service, ce qui équivaut à un stop puis un start
systemctl start [Nom service]
systemctl stop [Nom service]
systemctl restart [Nom service] 

Par exemple, pour redémarrer nginx :

systemctl restart nginx.service
Comment démarrer, arrêter, redémarrer un service avec systemctl

La commande reload permet de relire le fichier de configuration.
Elle est idéale après une modification de la configuration d’un service pour prendre en compte les modifications.
Étant donné que la recharge ne recharge que la configuration, elle entraînera moins de perturbation des activités existantes et des connexions actuellement ouvertes.
Les utilisateurs peuvent même ne pas remarquer que c’était couru.
Cependant, selon le serveur dont nous parlons, certaines options peuvent ne pas être modifiables à l’aide de rechargement.
Et si le serveur utilise trop de mémoire, etc., il peut être nécessaire d’utiliser le redémarrage pour le forcer à partir d’une ardoise propre.

La syntaxe est la même, ainsi pour recharger le service nginx :

systemctl reload nginx.service

Comment recharger la configuration d’un service avec systemctl daemon-reload

L’option daemon-reload pour recharger la configuration du gestionnaire systemd.
Cela relancera tous les générateurs rechargera tous les fichiers d’unité et recréez l’intégralité de l’arbre de dépendances. Pendant le rechargement du démon, tous les sockets
systemd écoute au nom de la configuration de l’utilisateur restera accessible.

systemctl daemon-reload

Comment activer un service au démarrage avec systemctl

On utilise l’option enable suivi du nom du service.
Voici la syntaxe par défaut à utiliser :

sudo systemctl enable SERVICE_NAME

Par exemple pour désactiver le nom du service scan de clamd :

systemctl enable [email protected]

Comment désactiver un service au démarrage avec systemctl

De même il est possible de désactiver un service du démarrage Linux avec systemctl.
Pour cela, on utilise l’option disable comme expliqué ci-dessous :

sudo systemctl disable SERVICE_NAME

Par exemple pour déactiver le service clamd du démarrage de Linux :

systemctl disable [email protected]

Comment lister les dépendances d’un service

systemctl permet aussi d’interroger un service et lister les dépendances.
Il s’agit des services nécessaires au fonctionnement de ce dernier.
Si un des services dépendants n’est pas démarré, vous ne pourrez pas démarrer le service.

systemctl list-dependencies --all nginx.service
Comment lister les dépendances d'un service

Comment masquer un service avec systemd

Enfin systemd propose une commande mask qui permet de masquer une unité dont un service.
Le service est alors considéré comme étant totalement désactivé.
A partir de là, il est impossible de démarrer le service.

systemctl mask nginx.service

systemd créé alors un lien symbolique qui fait pointer le fichier du service vers /dev/null

Le démarrage du service est impossible et on rencontre une erreur du type :

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

On utilise la commande umask pour retirer l’état masquer d’un service.
Cela réactive le service et il est alors possible de le démarrer à nouveau.

systemctl unmask nginx.service
Comment masquer un service avec systemd