Gestion des services dans systemd¶
Dans cet article
systemd est le système init et le gestionnaire de services standard dans la plupart des distributions Linux modernes :
- Ubuntu 16.04+ (fortement recommandé Ubuntu 20.04/22.04/24.04)
- Debian 8+ (Debian 11/12 – releases LTS actuelles)
- RHEL/CentOS 7+ (RHEL 9 / AlmaLinux/Rocky Linux 9 – remplacements modernes de CentOS)
- Fedora, openSUSE, Arch, et autres
Après le démarrage du noyau, il confie le contrôle à systemd (PID 1), qui est responsable de :
- lancer et arrêter les services,
- monter les systèmes de fichiers,
- configurer le réseau et l’environnement,
- gérer les dépendances entre les composants.
L'interface principale pour interagir avec systemd est l'utilitaire systemctl.
Syntaxe de base¶
Note
Dans la plupart des cas, l'utilisation de systemctl nécessite des privilèges superutilisateur — utilisez sudo.
Affichage de l’état du service¶
| Tâche | Commande |
|---|---|
| Lister les unités actives (services, sockets, timers, etc.) | systemctl list-units |
| Uniquement les services en cours d'exécution | systemctl list-units --type=service |
| Tous les services (y compris arrêtés et inactifs) | systemctl list-units --type=service --all |
| Lister les services en cours d'exécution | systemctl list-units --type=service --state=running |
| Rechercher un service spécifique (par ex., nginx) | systemctl list-units '*nginx*' |
| Informations détaillées sur un service | systemctl status nginx (avec journaux, PID, dépendances) |
Note
Ajoutez --no-pager pour empêcher la sortie d'être paginée (ex. : systemctl status nginx --no-pager).
Gestion de l’opération du service¶
Nous utiliserons nginx comme exemple, mais les commandes s’appliquent à tout service : sshd, postgresql, clamav-daemon, docker, etc.
| Action | Commande | Remarque |
|---|---|---|
| Vérifier l’état | sudo systemctl status nginx | Indique si le service est en cours d'exécution, son PID, les journaux récents et les erreurs |
| Démarrer | sudo systemctl start nginx | Démarre le service jusqu'au prochain redémarrage |
| Arrêter | sudo systemctl stop nginx | |
| Redémarrer | sudo systemctl restart nginx | Arrêt complet → démarrage (si non en cours, il démarrera) |
| Recharger la configuration sans arrêter | sudo systemctl reload nginx | Fonctionne si le service supporte SIGHUP (nginx, Apache, Postfix, etc.) |
| Recharger ou redémarrer | sudo systemctl reload-or-restart nginx | Reviens à restart si reload n’est pas supporté |
| Essayer de redémarrer (uniquement si en cours) | sudo systemctl try-restart nginx | Sûr pour les scripts |
| Vérifier si le service est actif | systemctl is-active nginx | Sortie : active / inactive / unknown |
| Vérifier si le service a échoué | systemctl is-failed nginx | Sortie : failed si le service s’est terminé avec une erreur |
Note
Après startrestart, le service ne démarrera pas automatiquement au redémarrage — l’auto‑démarrage nécessite une configuration séparée.
Gestion de l'auto démarrage¶
| Action | Commande | Ce qui se passe |
|---|---|---|
| Activer l'auto‑démarrage | sudo systemctl enable nginx | Crée un lien symbolique de /usr/lib/systemd/system/nginx.service vers /etc/systemd/system/multi-user.target.wants/ |
| Désactiver l'auto‑démarrage | sudo systemctl disable nginx | Supprime le lien symbolique mais ne stoppe pas le processus en cours |
| Vérifier l'état d'auto‑démarrage | systemctl is-enabled nginx | Valeurs possibles : enabled, disabled, static, masked |
| Réinitialiser les paramètres → réactiver | sudo systemctl reenable nginx | Efface les surcharges précédentes et réactive le service |
| Réinitialiser aux paramètres par défaut | sudo systemctl preset nginx | Rétablit les paramètres personnalisés aux paramètres par défaut de la distribution (rarement utilisé) |
Fonctionnalités avancées¶
1. Forcer le rechargement de la configuration systemd¶
Si vous avez modifié un fichier .service :
2. Afficher les dépendances¶
3. Journal du service (via journalctl)¶
4. Masquer un service (désactivation complète, même manuellement)¶
Commandes utiles pour un usage quotidien¶
# Vérifier rapidement si le service est activé et en cours d'exécution
systemctl is-active --quiet nginx && echo "OK" || echo "STOPPED"
# Démarrer et activer l'auto‑démarrage avec une seule commande
sudo systemctl start nginx && sudo systemctl enable nginx
# Désactiver et arrêter le service
sudo systemctl stop nginx && sudo systemctl disable nginx
Note
Le drapeau --now (disponible depuis systemd v220+, 2015) exécute simultanément enable + start ou disable + stop.