Documentation/Administration/Utiliser systemd pour gérer les services
Administration10 min2026-05-0647Populaire

Utiliser systemd pour gérer les services

Démarrer, arrêter, redémarrer, activer et diagnostiquer des services avec systemctl sur Debian ou Ubuntu.

Utiliser systemd pour gérer les services

Objectif

systemd est le système utilisé par Debian et Ubuntu pour gérer les services.

Avec systemctl, vous pouvez :

  • Démarrer un service.
  • L'arrêter.
  • Le redémarrer.
  • L'activer au démarrage.
  • Lire son état.
  • Diagnostiquer un échec.

Vérifier l'état d'un service

Afficher l'état d'un service :

bash
systemctl status nginx

La sortie indique notamment :

  • Si le service est actif.
  • Depuis quand il tourne.
  • Le PID principal.
  • Les dernières lignes de logs.
  • Une éventuelle erreur de démarrage.

Pour quitter l'affichage, appuyez sur q.


Démarrer, arrêter et redémarrer

Démarrer un service :

bash
systemctl start nginx

Arrêter un service :

bash
systemctl stop nginx

Redémarrer un service :

bash
systemctl restart nginx

Recharger la configuration sans couper le service si le service le supporte :

bash
systemctl reload nginx

Recharger ou redémarrer si le reload n'est pas disponible :

bash
systemctl reload-or-restart nginx

Activer un service au démarrage

Activer un service au démarrage du VPS :

bash
systemctl enable nginx

Désactiver le lancement automatique :

bash
systemctl disable nginx

Vérifier si un service est activé :

bash
systemctl is-enabled nginx

Activer et démarrer en une seule commande :

bash
systemctl enable --now nginx

Lister les services

Lister les services actifs :

bash
systemctl list-units --type=service --state=running

Lister tous les services :

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

Lister les services en échec :

bash
systemctl --failed

Réinitialiser l'état des services en échec après correction :

bash
systemctl reset-failed

Lire les logs d'un service

Afficher les logs d'un service :

bash
journalctl -u nginx

Afficher les 100 dernières lignes :

bash
journalctl -u nginx --no-pager -n 100

Suivre les logs en direct :

bash
journalctl -u nginx -f

Afficher les logs depuis le dernier démarrage :

bash
journalctl -u nginx -b

Diagnostiquer un service qui échoue

Vérifiez l'état :

bash
systemctl status nginx

Lisez les logs :

bash
journalctl -u nginx --no-pager -n 100

Si le service possède une commande de test, utilisez-la.

Pour Nginx :

bash
nginx -t

Pour Apache :

bash
apache2ctl configtest

Redémarrez après correction :

bash
systemctl restart nginx

Créer un service systemd simple

Créez un fichier de service :

bash
nano /etc/systemd/system/mon-app.service

Exemple pour une application Node.js :

ini
[Unit]
Description=Mon application Node.js
After=network.target

[Service]
WorkingDirectory=/var/www/mon-app
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=5
User=www-data
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

Rechargez systemd :

bash
systemctl daemon-reload

Activez et démarrez le service :

bash
systemctl enable --now mon-app

Vérifiez :

bash
systemctl status mon-app

Modifier un service existant

Après modification d'un fichier .service, rechargez systemd :

bash
systemctl daemon-reload

Redémarrez le service :

bash
systemctl restart mon-app

Vérifiez les logs :

bash
journalctl -u mon-app --no-pager -n 100

Erreurs fréquentes

Unit not found

Le nom du service est incorrect ou le fichier .service n'existe pas.

bash
systemctl list-units --type=service --all | grep nom

Failed to start

Consultez les logs :

bash
journalctl -u nom-du-service --no-pager -n 100

Modification ignorée

Vous avez modifié un fichier .service sans recharger systemd.

bash
systemctl daemon-reload

Conclusion

systemctl est indispensable pour administrer un VPS Linux. Il permet de piloter les services, comprendre leurs erreurs et automatiser leur lancement au démarrage.

Ce guide vous a aidé ?

Votre retour permet de repérer les guides à améliorer en priorité.