Extraído de esta resposta :
Você pode escrever um script bash monitor.sh
, que inicia seu script python e o reinicia se ele falhar, mas não reiniciará se o script sair normalmente:
#!/bin/bash
until myscript.py; do
echo "'myscript.py' crashed with exit code $?. Restarting..." >&2
sleep 1
done
Em seguida, basta iniciar o script do monitor em segundo plano:
nohup monitor.sh &
Como uma alternativa para nohup
, você também pode considerar o tmux ou tela para executar processos em segundo plano.