Dans un système Linux , les services (également appelés démons ) jouent un rôle critique dans la gestion de diverses tâches telles que l’hébergement web, la gestion de bases de données et le réseau. Cependant, les services peuvent parfois planter ou s’arrêter en raison d’erreurs, d’une utilisation élevée des ressources ou de pannes système inattendues.
Pour prévenir les temps d’arrêt et garantir un fonctionnement fluide, les administrateurs système peuvent configurer les services pour qu’ils redémarrent automatiquement chaque fois qu’ils échouent, ce qui est particulièrement utile pour les serveurs web ( Apache , Nginx ), les bases de données ( MySQL , PostgreSQL ) ou d’autres applications critiques qui doivent être disponibles à tout moment.
Dans ce guide, nous expliquerons comment utiliser systemd pour configurer un service Linux afin qu’il redémarre automatiquement s’il s’arrête.
Pourquoi redémarrer un service automatiquement ?
Il existe plusieurs raisons pour lesquelles vous pourriez vouloir redémarrer automatiquement un service sous Linux :
- Minimiser les temps d’arrêt : Si un service s’arrête de façon inattendue, les redémarrages automatiques garantissent que les utilisateurs subissent une interruption minimale.
- Améliorer la fiabilité : Les services tels que les serveurs web, les bases de données et les processus en arrière-plan doivent toujours être en fonctionnement.
- Réduire le travail manuel : Sans automatisation, vous devriez vérifier fréquemment les services et les redémarrer manuellement s’ils échouent.
- Gérer les défaillances inattendues: Si un service plante en raison de bugs logiciels, de limites de ressources ou d’erreurs système, systemd peut le redémarrer sans intervention administrative.
Maintenant, passons en revue les étapes pour configurer les redémarrages automatiques en utilisant systemd.
Étape 1 : Identifier le Service à Redémarrer
Avant d’apporter des modifications, vous devez connaître le nom exact du service que vous souhaitez configurer en listant tous les services en cours d’exécution.
systemctl list-units --type=service --state=running

Si vous connaissez déjà le nom du service, vous pouvez vérifier son statut.
systemctl status apache2

Remplacez apache2
par le nom réel du service que vous souhaitez gérer.
Étape 2 : Modifier la Configuration du Service
Systemd vous permet de modifier le comportement du service en utilisant des fichiers de configuration personnalisés. Au lieu de modifier les paramètres systèmes globaux (qui peuvent être écrasés lors des mises à jour), nous utiliserons systemctl edit
pour créer un fichier de remplacement.
Exécutez la commande suivante :
systemctl edit apache2
Cela ouvrira un fichier vierge dans votre éditeur de texte par défaut.
Si le fichier n’est pas vide, vous verrez les paramètres existants que vous pouvez modifier. Sinon, vous devrez ajouter la configuration de redémarrage nécessaire.

Étape 3 : Ajouter la Configuration de Redémarrage de Systemd
Dans l’éditeur, ajoutez les lignes suivantes.
[Service] Restart=always RestartSec=5s
Explication de ces paramètres :
Restart=always
– Garantit que le service redémarre chaque fois qu’il s’arrête, quelle qu’en soit la raison.RestartSec=5s
– Indique à systemd d’attendre 5 secondes avant de redémarrer le service, ce qui peut éviter des boucles de redémarrage rapides en cas d’échecs répétés.
Une fois ajouté, enregistrez et fermez le fichier.

Après avoir apporté des modifications à un service systemd, vous devez recharger systemd et redémarrer le service pour garantir que la nouvelle configuration est appliquée :
sudo systemctl daemon-reload sudo systemctl restart apache2
Pour confirmer que le service est désormais configuré pour redémarrer automatiquement, exécutez :
sudo systemctl show apache2 | grep Restart
Si tout est configuré correctement, vous devriez voir :
Restart=always
Étape 4 : Tester le Redémarrage Automatique sous Linux.
Pour vérifier que la configuration fonctionne, vous pouvez arrêter manuellement le service et vérifier s’il redémarre.
sudo systemctl stop apache2
Attendez 5 secondes, puis vérifiez son statut.
sudo systemctl status apache2
Si le service est à nouveau en cours d’exécution, le redémarrage automatique fonctionne !
Options de Redémarrage Supplémentaires
En fonction de vos besoins, systemd propose différentes politiques de redémarrage :
Restart=always
– Le service redémarre toujours, même s’il a été arrêté manuellement.Restart=on-failure
– Redémarre uniquement si le service se termine par une erreur (mais pas s’il est arrêté manuellement).Restart=on-abnormal
– Redémarre le service s’il plante en raison d’un signal (comme une erreur de segmentation).Restart=on-watchdog
– Redémarre le service s’il dépasse le délai d’exécution.
Vous pouvez remplacer Restart=always
par l’une de ces options en fonction de vos besoins.
Comment vérifier les journaux de service pour détecter les problèmes
Si un service continue à échouer, il est conseillé de vérifier les journaux en utilisant la commande journalctl, qui affichera les journaux du service des 10 dernières minutes.
journalctl -u apache2 --since "10 minutes ago"
Pour un flux de journal en temps réel, utilisez :
journalctl -u apache2 -f
Conclusion
La mise en place de redémarrages automatiques pour les services défaillants garantit le bon fonctionnement des applications critiques sans intervention manuelle. En utilisant les options de redémarrage de systemd, vous pouvez réduire les temps d’arrêt, améliorer la stabilité du système et réduire le besoin de dépannage manuel.
Source:
https://www.tecmint.com/automatically-restart-service-linux/