2 votos

¿Cómo puedo devolver un valor distinto de cero si el trabajo de arranque no se inicia?

¿Cómo puedo devolver un valor distinto de cero de un trabajo inicial si no se lanza la primera vez? Sospecho que el respawn podría ser el culpable aquí, pero quizás no.

La razón por la que quiero respawn es porque myscript.py es un servicio que puede salir por dos razones distintas:

  • Mala configuración. (falla en el arranque)
  • Excepción inesperada al procesar los datos. (Fallo de tiempo de ejecución)

Así que me gustaría mucho mantener el segundo comportamiento, sin el primero si es posible.

description "MyJob"

respawn

start on runlevel [2345]
stop on runlevel [!2345]

script
    exec python /usr/local/bin/myscript.py
end script

De todos modos, podría vivir con los comportamientos duales si los comandos de reinicio o inicio iniciales devuelven un valor distinto de cero cuando el script sale dentro de una pequeña ventana.

¿Cómo puedo hacerlo?

1voto

Caustic Puntos 43

Me lo imaginé.

description "MyJob"

respawn

# retry 4 times in 3 seconds
# This should ALWAYS be true:
# 4 times * sleep .5 < 3 sec
# Otherwise it will continue respawning forever
respawn limit 4 3

start on runlevel [2345]
stop on runlevel [!2345]

script
    exec python /usr/local/bin/myscript.py
end script

post-start script
    # Time after starting service should unquestionably be running
    sleep .5
    if ps fax | grep '[m]yscript' ; then
        exit 0
    fi
    exit 1
end script

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: