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 simple en la web.
¿Es advenedizo + monit overkill? ¿Alguien sabe una alternativa más simple, o un buen tutorial para advenedizo + monitor? Si solo quiero estar seguro de que el script siempre se está ejecutando, ¿se requiere monit?
python
upstart
monitoring
sebpiq
fuente
fuente
Respuestas:
La forma más sencilla de hacer esto es colocar esto en
/etc/init/something.conf
:Respawn lo iniciará nuevamente si se elimina o sale de un valor distinto de cero (como una excepción no detectada). Esto funcionará volviendo a Ubuntu 10.04.
Si tiene 12.04 puede ser más elegante. Lo anterior ejecutará su script como root. En 12.04 puede agregar setuid / setgid:
Si su script se cierra cuando no hay una red disponible y planea ejecutarlo en una conexión de red inestable, bueno, debe solucionarlo y hacer que se mantenga vivo / reintentar. Pero si no puede, es posible que también deba iniciarlo manualmente cuando aparezca un dispositivo de red. Entonces puede colocar esto en
/etc/network/if-up.d/yourscript
(hacerlo ejecutable con chmod + x)Donde su script es simplemente algo arbitrario y exclusivo de este script en particular, y "algo" es el mismo que el nombre del trabajo (como el
/etc/init/something.conf
sugerido anteriormente).fuente
upstart
¿verdad? ¿Significa esto que el script también se iniciará en el arranque (¡lo cual sería genial!)? ¿Yrespawn
es suficiente para que no necesite configurarmonit
?El enfoque habitual de los viejos tiempos era escribir un archivo que contenga una marca de tiempo o la identificación del proceso
/tmp
y luego verificar si esta identificación del proceso todavía se estaba ejecutando o, respectivamente, si la marca de tiempo aún era reciente.También podría hacer un simple
while [ 1 ]; do phyton-script.ph; done
que reiniciaría el script en caso de que regrese.Para obtener más posibilidades, proporcione más información sobre su secuencia de comandos. Especialmente en por qué esperas que salga o se bloquee inesperadamente.
fuente