Je cherche un moyen de surveiller un processus et de relancer l'exécutable si le processus meurt pour une raison quelconque. Linux a-t-il un outil intégré qui peut le faire?
Je cherche un moyen de surveiller un processus et de relancer l'exécutable si le processus meurt pour une raison quelconque. Linux a-t-il un outil intégré qui peut le faire?
Réponses:
S'il est lancé depuis init, vous pouvez le faire réapparaître par init. Définissez l'action du processus sur «respawn» pour les niveaux d'exécution auxquels vous souhaitez que le processus se déroule.
J'ai déjà répondu à une question similaire .
Dans ton cas:
#!/bin/bash
while ! <<command>>
do
sleep 1
echo "Restarting program..."
done
Remplacez <<command>>
par la commande que vous souhaitez exécuter. Le processus doit se terminer avec le code de sortie zéro afin de rompre la boucle. Sinon, il est redémarré par le script.
Voulez-vous le redémarrer uniquement s'il meurt? Le problème est qu'il ne gère pas les situations où il se fige. Donc, vérifier simplement le processus n'aidera pas toujours. Donc, si cela ressemble à un serveur Web, vous voulez qu'un script le vérifie du point de vue de l'utilisateur.
Si vous configurez Nagios Monitoring, vous pouvez alors utiliser des gestionnaires d'événements . Ce ne sont que des scripts que vous écrivez qui s'exécuteront lorsque le service sera arrêté, vous pouvez donc en avoir un qui redémarre quelque chose comme Apache si le site Web est en panne.
Selon la distribution, mais nous avons utilisé avec succès "monit" pour cette tâche. C'est assez simple. Vous pouvez rédiger vos propres chèques, surveiller le processus PID, etc.
Exemple de fichier monitrc:
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/ssh start"
stop program "/etc/init.d/ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout
Réponse courte : Non, vous devez le faire vous-même.
Réponse longue : vous aurez besoin d'un processus parent pour le démarrer, puis continuez à vérifier qu'il est vivant et redémarrez-le si nécessaire.
Vous pouvez utiliser quelque chose comme daemontools
pour le gérer.