Utiliser systemd pour gérer les services
Démarrer, arrêter, redémarrer, activer et diagnostiquer des services avec systemctl sur Debian ou Ubuntu.

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 :
systemctl status nginxLa 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 :
systemctl start nginxArrêter un service :
systemctl stop nginxRedémarrer un service :
systemctl restart nginxRecharger la configuration sans couper le service si le service le supporte :
systemctl reload nginxRecharger ou redémarrer si le reload n'est pas disponible :
systemctl reload-or-restart nginxActiver un service au démarrage
Activer un service au démarrage du VPS :
systemctl enable nginxDésactiver le lancement automatique :
systemctl disable nginxVérifier si un service est activé :
systemctl is-enabled nginxActiver et démarrer en une seule commande :
systemctl enable --now nginxLister les services
Lister les services actifs :
systemctl list-units --type=service --state=runningLister tous les services :
systemctl list-units --type=service --allLister les services en échec :
systemctl --failedRéinitialiser l'état des services en échec après correction :
systemctl reset-failedLire les logs d'un service
Afficher les logs d'un service :
journalctl -u nginxAfficher les 100 dernières lignes :
journalctl -u nginx --no-pager -n 100Suivre les logs en direct :
journalctl -u nginx -fAfficher les logs depuis le dernier démarrage :
journalctl -u nginx -bDiagnostiquer un service qui échoue
Vérifiez l'état :
systemctl status nginxLisez les logs :
journalctl -u nginx --no-pager -n 100Si le service possède une commande de test, utilisez-la.
Pour Nginx :
nginx -tPour Apache :
apache2ctl configtestRedémarrez après correction :
systemctl restart nginxCréer un service systemd simple
Créez un fichier de service :
nano /etc/systemd/system/mon-app.serviceExemple pour une application Node.js :
[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.targetRechargez systemd :
systemctl daemon-reloadActivez et démarrez le service :
systemctl enable --now mon-appVérifiez :
systemctl status mon-appModifier un service existant
Après modification d'un fichier .service, rechargez systemd :
systemctl daemon-reloadRedémarrez le service :
systemctl restart mon-appVérifiez les logs :
journalctl -u mon-app --no-pager -n 100Erreurs fréquentes
Unit not found
Le nom du service est incorrect ou le fichier .service n'existe pas.
systemctl list-units --type=service --all | grep nomFailed to start
Consultez les logs :
journalctl -u nom-du-service --no-pager -n 100Modification ignorée
Vous avez modifié un fichier .service sans recharger systemd.
systemctl daemon-reloadConclusion
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é.