Gérer les services avec systemctl sur votre VPS
Votre VPS exécute des programmes qui doivent toujours être disponibles : le serveur SSH, un serveur web, une base de données. Ces programmes s'appellent des services. Sur Debian, Ubuntu, AlmaLinux et Rocky Linux, c'est systemd qui les démarre et les surveille, et vous pilotez systemd avec la commande systemctl. Voici les commandes dont vous aurez le plus souvent besoin.
L'état d'un service
systemctl status nginx
Vous pouvez omettre l'extension .service. Lisez la sortie de haut en bas :
- La pastille devant le nom est verte si le service fonctionne, blanche s'il est arrêté et rouge s'il a échoué.
- Loaded indique si le service démarre au lancement du système (
enabled) ou non (disabled). - Active indique s'il fonctionne actuellement (
active (running)), s'il est arrêté (inactive (dead)) ou s'il a échoué (failed), et depuis quand. - En bas figurent les dernières lignes du journal du service. Vous y trouverez souvent déjà la cause du problème.
Démarrer, arrêter et recharger
| Commande | Ce qu'elle fait |
|---|---|
sudo systemctl start nginx | Démarrer maintenant |
sudo systemctl stop nginx | Arrêter maintenant |
sudo systemctl restart nginx | Arrêter puis redémarrer |
sudo systemctl reload nginx | Relire la configuration sans arrêter le service |
La différence entre restart et reload est importante. Lors d'un restart, le service s'arrête un instant, et si la nouvelle configuration contient une erreur, il ne redémarre plus et votre site web est hors ligne. Lors d'un reload, le service continue de fonctionner ; en cas d'erreur, nginx conserve l'ancienne configuration. Testez donc d'abord la configuration (sudo nginx -t, sudo sshd -t), puis utilisez reload. Tous les services ne prennent pas en charge reload ; sudo systemctl reload-or-restart choisit automatiquement.
Au démarrage : enable et disable
Démarrer un service et le « lancer au démarrage » sont deux choses différentes. Si vous démarrez un service uniquement avec start, il aura disparu après le prochain redémarrage, par exemple à la suite d'une mise à jour du noyau.
| Commande | Ce qu'elle fait |
|---|---|
sudo systemctl enable --now nginx | Démarrer maintenant et désormais à chaque démarrage. Utilisez cette commande pour un nouveau service |
sudo systemctl disable --now nginx | Arrêter maintenant et ne plus lancer au démarrage |
systemctl is-enabled nginx | Indique si le service est lancé au démarrage |
Qu'est-ce qui ne va pas ? Et qu'est-ce qui tourne ?
systemctl --failed
Cette commande affiche tous les services en échec. La liste devrait être vide. Consultez-la après chaque redémarrage et chaque mise à niveau. Une fois le problème résolu, supprimez le signalement avec sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningaffiche tous les services en cours d'exécution. Si vous ne connaissez pas l'un d'eux, renseignez-vous sur son rôle. Un service dont vous n'avez pas besoin est une porte d'entrée inutile.systemctl list-timersaffiche les tâches planifiées de systemd, avec leur dernière exécution et la prochaine. Vous voyez ainsi, par exemple, si les timers des mises à jour automatiques ou du renouvellement des certificats fonctionnent.
Les journaux d'un service
Si vous souhaitez voir davantage que les quelques lignes de systemctl status, utilisez journalctl :
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
La première commande affiche tout ce qui concerne nginx au cours de la dernière heure, la seconde uniquement les erreurs depuis le dernier redémarrage. Vous trouverez d'autres commandes dans Lire les journaux avec journalctl et docker logs.
Modifier les paramètres d'un service
Ne modifiez jamais le fichier unit d'un paquet (dans /usr/lib/systemd/system/), car une mise à jour l'écrase. Utilisez sudo systemctl edit nginx : cette commande crée un petit fichier contenant uniquement vos modifications et demande à systemd de le relire. Pour voir la configuration finalement appliquée, utilisez systemctl cat nginx.
sudo systemctl reboot, ou avec Redémarrer dans l'écran VPS. Un arrêt forcé revient à débrancher la prise : les services n'ont pas le temps de s'arrêter correctement et une base de données peut être endommagée. Consultez L'écran VPS : marche et arrêt, graphiques, système et journal.Sur AlmaLinux et Rocky Linux, systemctl fonctionne exactement de la même manière, seuls certains services portent un autre nom : le service SSH s'y appelle sshd au lieu de ssh, Apache s'appelle httpd et le pare-feu firewalld.
Envie d'en savoir plus ? Suivez le cours gratuit VPS et administration de serveurs Linux, leçon 6.1 Gérer les services avec systemd ou leçon 6.2 Lire les journaux avec journalctl.
