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 :
-
Ouvrez un éditeur de texte et créez un nouveau fichier nommé
monitor_script.sh
. -
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
- 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
etSCRIPT_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.