Il arrive souvent que le service soit interrompu spontanément. L'utilisateur doit s'occuper de son rétablissement manuel. Il n'y a pas de problème en tant que tel, si cela se produit sur un ordinateur domestique. C'est même une bonne chose, car cela permet de déterminer l'état du service, d'identifier les défauts et de les éliminer. Mais la situation est bien différente lorsqu'il s'agit de serveurs et de services VPS, qui doivent fonctionner en permanence pour permettre l'accès à un site web ou à une application. Dans cet article, nous verrons comment configurer le redémarrage automatique des services Linux de plusieurs manières : avec un script de surveillance exécuté périodiquement via cron et dans systemd.
Par défaut, Systemd ne fait rien avec le service s'il se bloque. Mais l'utilisateur peut toujours configurer les paramètres de manière à ce qu'en cas de plantage ou d'arrêt du service, celui-ci soit automatiquement redémarré. Pour ce faire, la directive Restart est utilisée et doit être ajoutée à la section Service. Voyons maintenant un exemple de configuration du redémarrage automatique du service Apache :
$ sudo systemctl edit apache2
[Service]
Restart=on-failure
RestartSec=5s
Ici, RestartSec spécifie le temps d'attente avant le redémarrage du service. Lorsque vous avez terminé, enregistrez les modifications et exécutez la commande daemon-reload pour relire la configuration :
$ sudo systemctl daemon-reload
Ensuite, pour vérifier que tout fonctionne correctement, regardez l'état du processus, terminez le processus avec un signal kill :
$ sudo systemctl status apache2
$ kill -KILL 32091
Vérifiez à nouveau l'état, le processus devrait être en cours d'exécution. Pour que l'initialisation soit exécutée à chaque fois, utilisez une directive spéciale Restart : always. Mais vous devez être très prudent lorsque vous l'utilisez, car elle ne vous permettra pas de mettre fin au processus même si cela est nécessaire. Si le processus se bloque constamment, de sorte qu'il est redémarré, vous pouvez ajouter une limite au nombre de redémarrages dans la section Service :
$ sudo systemctl edit apache2
[Service]
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=5s
Ici, StartLimitBurst
et StartLimitIntervalSec
indiquent l'importance de redémarrer le service cinq fois, et s'il se plante au cours de ces cinq fois, de le laisser tranquille et de ne pas y toucher. La seconde directive limite les redémarrages du service à 500 secondes.
Il s'agit probablement de la méthode la plus fiable et la plus sûre, qui fonctionne dans toutes les versions de Linux. Dans Apache, il est facile de créer un redémarrage automatique à l'aide d'un script. Pour ce faire, vous devez entrer la commande suivante :
$ sudo vi /usr/local/bin/apache-monitor.sh
#!/bin/bash
ps -A | grep apache2 || systemctl start apache2
Enregistrez le fichier et assurez-vous qu'il est exécutable :
chmod ugo+x /usr/local/bin/apache-monitor.sh
N'oubliez pas d'ajouter une entrée cron pour exécuter le script périodiquement :
$ sudo crontab -e
*/5 * * * * /usr/local/bin/apache-monitor.sh
C'est tout. Oui, la mise en place d'un redémarrage automatique du service n'est pas aussi simple qu'il n'y paraît à première vue. Mais il s'agit d'une capacité importante, et vous devriez donc y prêter attention - cela en vaut vraiment la peine.
Apply the discount by inserting the promo code in the special field at checkout:
Apply the discount by inserting the promo code in the special field at checkout: