ejecute un script de Python en segundo plano y reinícielo en caso de fallo

ejecute un script de Python en segundo plano y reinícielo en caso de fallo

Tengo un script Python muy simple que me gustaría ejecutar siempre en mi servidor Ubuntu 12.04. Pensé en usar advenedizo + monit. El problema es que esas herramientas parecen bastante complicadas para un simple mortal como yo, y no puedo encontrar un ejemplo sencillo en la web.

¿Es advenedizo + monit excesivo? / ¿Alguien conoce una alternativa más sencilla? / o un buen tutorial ?

Respuesta1

Tomado deesta respuesta:

Puede escribir un script bash monitor.shque inicie su script Python y lo reinicie si falla, pero no se reinicie si el script sale normalmente:

#!/bin/bash
until myscript.py; do
    echo "'myscript.py' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

Luego simplemente inicie el script del monitor en segundo plano:

nohup monitor.sh &

Como alternativa a nohup, también puedes considerartmuxopantallapara ejecutar procesos en segundo plano.

Respuesta2

La respuesta anterior es genial. No puedo comentar por ahora, así que tal vez mejore la respuesta aquí.

Es posible que incluso desee escribir una función para "myscript", ya que es un script de Python y no se ejecuta en el entorno bash.

Entonces,

#!/bin/bash

myscript(){
    python3 myscript [args..]
}

until myscript; do
    echo "'myscript' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

La gente nueva en python o bash no sabría esta pequeña cosa. Podría ayudarlos. Al principio solía tener problemas con cosas tan pequeñas. ¡No quiero que otros lo hagan!

información relacionada