Problema: Manter Processos em Execução
Processos podem falhar ou parar sem aviso, o que pode interromper serviços e causar tempo de inatividade. Reiniciar esses processos manualmente leva tempo e não é eficiente, especialmente para sistemas importantes que precisam funcionar constantemente.
Solução: Script Bash para Monitoramento e Reinício de Processos
Criando um Script Bash
Um script bash pode monitorar e reiniciar um script Python se ele parar de funcionar. As principais partes deste script bash incluem:
- Um loop que executa continuamente
- Um comando para verificar se o script Python está em execução
- Lógica para iniciar o script Python se não estiver em execução
O script verifica se o processo Python está em execução usando o comando pgrep
. Se o processo não for encontrado, o script o inicia novamente. Este método é simples para manter um script em execução.
Dica: Registro para Solução de Problemas
Adicione registro ao seu script bash para acompanhar quando o script Python é reiniciado. Isso pode ajudar na solução de problemas e no monitoramento da frequência de reinícios. Você pode fazer isso adicionando uma linha para escrever em um arquivo de log:
echo "$(date): Reiniciando $SCRIPT_NAME" >> /caminho/para/reinicio.log
Coloque esta linha logo antes do reinício do script Python no seu script bash.
Implementando o Script Bash
Aqui está como escrever o script bash:
-
Abra um editor de texto e crie um novo arquivo chamado
monitor_script.sh
. -
Adicione este conteúdo ao arquivo:
#!/bin/bash
SCRIPT_NAME="checkqueue.py"
SCRIPT_PATH="/caminho/para/checkqueue.py"
while true; do
if ! pgrep -f "$SCRIPT_NAME" > /dev/null; then
echo "Iniciando $SCRIPT_NAME"
python3 "$SCRIPT_PATH" &
fi
sleep 60
done
- Salve o arquivo e torne-o executável com o comando:
chmod +x monitor_script.sh
Vamos explicar cada parte do script:
#!/bin/bash
diz ao sistema para usar bash para executar este script.- As variáveis
SCRIPT_NAME
eSCRIPT_PATH
armazenam o nome e o caminho completo do script Python. - O loop
while true
faz o script executar continuamente. pgrep -f "$SCRIPT_NAME"
verifica se um processo correspondente ao nome do script está em execução.- Se o processo não for encontrado, o script o inicia usando
python3 "$SCRIPT_PATH" &
. - O comando
sleep 60
faz o script esperar 60 segundos antes de verificar novamente.
Para usar este script, substitua /caminho/para/checkqueue.py
pelo caminho real do seu script Python. Você pode então executar o script bash em segundo plano ou adicioná-lo aos processos de inicialização do seu sistema para manter seu script Python sempre em execução.