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.
Table des matières
- 1 Comment utiliser systemctl sur Linux
- 2 Systemctl Linux : utilisation et exemples
- 2.1 Comment lister tous les services avec leurs statuts
- 2.2 Comment afficher le statut d’un service : démarré, arrêté, failed
- 2.3 Comment afficher la configuration d’un service avec systemctl
- 2.4 Comment démarrer, arrêter, recharger, redémarrer un service avec systemctl
- 2.5 Comment recharger la configuration d’un service avec systemctl daemon-reload
- 2.6 Comment activer un service au démarrage avec systemctl
- 2.7 Comment désactiver un service au démarrage avec systemctl
- 2.8 Comment afficher les services en erreur
- 2.9 Comment lister les dépendances d’un service
- 2.10 Comment masquer un service avec systemd
- 3 Liens
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 :
Commandes | Description |
list-units | Lister les unités systemd |
start | Démarrer un service |
stop | Arrêter un service |
mask | Masquer un service |
status | Vérifier le statut du service |
restart | Redémarrer le service |
reload | Recharger un ou plusieurs services |
reload-or-restart | Recharger le service sinon le redémarrer |
try-restart | Redémarre le service si actif |
kill | Envoie 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-reload | Recharger la configuration des services |
reload-or-restart | Recharger une ou plusieurs unités s’ils le soutiennent |
is-active | Vérifie si le service/unité est actif |
is-failed | Vérifie si le service a le statut failed |
show | Affiche la configuration et les propriétés d’une unité/service |
edit | Editer le fichier de configuration de l’unité/service |
clean | Nettoyer les runtime, cache, state, logs ou configuration de l’unité |
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
Ce tableau récapitule les états possibles d’une unité et d’un service :
Statut | Description |
loaded | Le 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é. |
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
- 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 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 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
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 afficher les services en erreur
Utilisez –state=failed ou –failed pour n’afficher que les unités défaillantes.
sudo systemctl --failed
Après avoir identifié les unités défaillantes, nous pouvons résoudre leur état en utilisant l’une des commandes suivantes :
systemctl reset-failed
systemctl reset-failed <nom service>
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 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
Liens
- Systemd : Configuration et fonctionnement des services Linux (daemon)
- Comment fonctionnement les services init.d Linux
- Comment créer un service Linux (systemd)
- Systemctl Linux : utilisation et exemples
- Comment démarrer, arrêter, redémarrer un service sur Linux
- Comment utiliser journalctl pour voir les journaux Linux dans systemd
- Quels sont les journaux Linux de /var/log/ et comment les lire
- Crontab et cron Linux : utilisations et exemples