Aller au contenu

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

systemctl [options] command [service]

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 :

sudo systemctl daemon-reload
sudo systemctl restart nginx

2. Afficher les dépendances

systemctl list-dependencies nginx

3. Journal du service (via journalctl)

journalctl -u nginx

4. Masquer un service (désactivation complète, même manuellement)

sudo systemctl mask nginx
sudo systemctl unmask nginx

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.