Comment surveiller et redémarrer un script automatiquement ?

Publié 8 septembre 2024

Problème : Maintenir les processus en cours d'exécution

Les processus peuvent planter ou s'arrêter sans avertissement, ce qui peut perturber les services et causer des temps d'arrêt. Redémarrer ces processus manuellement prend du temps et n'est pas efficace, surtout pour les systèmes importants qui doivent fonctionner en permanence.

Solution : Script Bash pour la surveillance et le redémarrage des processus

Création d'un script Bash

Un script bash peut surveiller et redémarrer un script Python s'il cesse de fonctionner. Les principales parties de ce script bash comprennent :

  • Une boucle qui s'exécute en continu
  • Une commande pour vérifier si le script Python est en cours d'exécution
  • Une logique pour démarrer le script Python s'il n'est pas en cours d'exécution

Le script vérifie si le processus Python est en cours d'exécution à l'aide de la commande pgrep. Si le processus n'est pas trouvé, le script le démarre à nouveau. Cette méthode est simple pour maintenir un script en fonctionnement.

Conseil: Journalisation pour le dépannage

Ajoutez de la journalisation à votre script bash pour suivre quand le script Python est redémarré. Cela peut aider au dépannage et à surveiller la fréquence des redémarrages. Vous pouvez le faire en ajoutant une ligne pour écrire dans un fichier journal :

echo "$(date): Redémarrage de $SCRIPT_NAME" >> /chemin/vers/redemarrage.log

Placez cette ligne juste avant le redémarrage du script Python dans votre script bash.

Implémentation du script Bash

Voici comment écrire le script bash :

  1. Ouvrez un éditeur de texte et créez un nouveau fichier nommé monitor_script.sh.

  2. Ajoutez ce contenu au fichier :

#!/bin/bash

SCRIPT_NAME="checkqueue.py"
SCRIPT_PATH="/chemin/vers/checkqueue.py"

while true; do
    if ! pgrep -f "$SCRIPT_NAME" > /dev/null; then
        echo "Démarrage de $SCRIPT_NAME"
        python3 "$SCRIPT_PATH" &
    fi
    sleep 60
done
  1. Sauvegardez le fichier et rendez-le exécutable avec la commande : chmod +x monitor_script.sh

Expliquons chaque partie du script :

  • #!/bin/bash indique au système d'utiliser bash pour exécuter ce script.
  • Les variables SCRIPT_NAME et SCRIPT_PATH stockent le nom et le chemin complet du script Python.
  • La boucle while true fait que le script s'exécute en continu.
  • pgrep -f "$SCRIPT_NAME" vérifie si un processus correspondant au nom du script est en cours d'exécution.
  • Si le processus n'est pas trouvé, le script le démarre en utilisant python3 "$SCRIPT_PATH" &.
  • La commande sleep 60 fait attendre le script pendant 60 secondes avant de vérifier à nouveau.

Pour utiliser ce script, remplacez /chemin/vers/checkqueue.py par le chemin réel vers votre script Python. Vous pouvez ensuite exécuter le script bash en arrière-plan ou l'ajouter aux processus de démarrage de votre système pour maintenir votre script Python en fonctionnement en permanence.