Problema: Mantenere i processi in esecuzione
I processi possono arrestarsi o interrompersi senza preavviso, causando interruzioni dei servizi e tempi di inattività. Riavviare questi processi manualmente richiede tempo e non è efficiente, soprattutto per sistemi importanti che devono funzionare costantemente.
Soluzione: Script Bash per il monitoraggio e il riavvio dei processi
Creazione di uno script Bash
Uno script bash può monitorare e riavviare uno script Python se smette di funzionare. Le parti principali di questo script bash includono:
- Un ciclo che viene eseguito continuamente
- Un comando per verificare se lo script Python è in esecuzione
- Una logica per avviare lo script Python se non è in esecuzione
Lo script verifica se il processo Python è in esecuzione utilizzando il comando pgrep. Se il processo non viene trovato, lo script lo avvia nuovamente. Questo metodo è semplice per mantenere uno script in esecuzione.
Suggerimento: Logging per la risoluzione dei problemi
Aggiungi il logging al tuo script bash per tenere traccia di quando lo script Python viene riavviato. Questo può aiutare nella risoluzione dei problemi e nel monitoraggio della frequenza dei riavvii. Puoi farlo aggiungendo una riga per scrivere in un file di log:
echo "$(date): Riavvio di $SCRIPT_NAME" >> /percorso/del/file/riavvio.log
Inserisci questa riga appena prima del riavvio dello script Python nel tuo script bash.
Implementazione dello script Bash
Ecco come scrivere lo script bash:
-
Apri un editor di testo e crea un nuovo file chiamato
monitor_script.sh. -
Aggiungi questo contenuto al file:
#!/bin/bash
SCRIPT_NAME="checkqueue.py"
SCRIPT_PATH="/percorso/di/checkqueue.py"
while true; do
if ! pgrep -f "$SCRIPT_NAME" > /dev/null; then
echo "Avvio di $SCRIPT_NAME"
python3 "$SCRIPT_PATH" &
fi
sleep 60
done
- Salva il file e rendilo eseguibile con il comando:
chmod +x monitor_script.sh
Spieghiamo ogni parte dello script:
#!/bin/bashindica al sistema di usare bash per eseguire questo script.- Le variabili
SCRIPT_NAMEeSCRIPT_PATHmemorizzano il nome e il percorso completo dello script Python. - Il ciclo
while truefa sì che lo script venga eseguito continuamente. pgrep -f "$SCRIPT_NAME"verifica se è in esecuzione un processo che corrisponde al nome dello script.- Se il processo non viene trovato, lo script lo avvia usando
python3 "$SCRIPT_PATH" &. - Il comando
sleep 60fa attendere lo script per 60 secondi prima di controllare di nuovo.
Per utilizzare questo script, sostituisci /percorso/di/checkqueue.py con il percorso effettivo del tuo script Python. Puoi quindi eseguire lo script bash in background o aggiungerlo ai processi di avvio del tuo sistema per mantenere il tuo script Python sempre in esecuzione.





