Como Monitorar e Reiniciar um Script Automaticamente?

Publicado 8 de setembro de 2024

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:

  1. Abra um editor de texto e crie um novo arquivo chamado monitor_script.sh.

  2. 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
  1. 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 e SCRIPT_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.