Reinicie um script python a cada hora ou mais

Reinicie um script python a cada hora ou mais

Então, eu tenho um script python que inicio no terminal apenas digitando o nome do script (python SCRIPTNAME.py)

Só estou me perguntando: é possível criar um script ou cron job que simplesmente pare e inicie o script python a cada hora?

Responder1

A melhor abordagem seria via GNU timeout como em

timeout -k 3600 python3 /path/to/script.py

onde -k significa "matar depois" e tempo em segundos.

Então, para que o script seja executado, finalizado e reiniciado a cada hora, você poderia fazer

while timeout -k 3600 python3 /path/to/script; do
   sleep 2
done

onde sleep 2é apenas adicionar um pequeno atraso antes de reiniciar


Como alternativa, considere usar o módulo Threading em Python para agendar as partes relevantes do script. Ver https://stackoverflow.com/a/50537798/3701431

Responder2

Parece que você querdemonizarou crie um serviço para seu script Python. É assim que outros aplicativos são iniciados, na ordem certa ou nos momentos certos.

Você desejará criar um systemdserviço para seu script Python e, em seguida, interagir com ele por meio do systemctl.

systemctl restart mypython
systemctl enable mypython

Depois de ter seu script funcionando dessa maneira, você pode configurá-lo cronpara fazer o que for necessário, que provavelmente será reiniciar o serviço.

Dependendo do objetivo do seu script e da sua capacidade de determinar se ele está sendo executado corretamente, você pode aprimorar seu serviço para relatar se ele parar de ser executado ou até mesmo procurar soluções comomonit.


Como apontado,esta respostafornece informações úteis, mas contém ferramentas desatualizadas, como rc.local. Em vez de usar systemd, você pode rastrear o PID do processo e, em seguida, encerrar esse processo e executar novamente o script a cada hora.

informação relacionada