Como posso retornar um valor diferente de zero se a tarefa upstart falhar ao iniciar?

2

Como posso retornar diferente de zero de um trabalho inicial se ele não for lançado pela primeira vez? Eu suspeito que o respawn possa ser o culpado aqui, mas talvez não.

A razão pela qual eu quero o respawn é porque o myscript.py é um serivce que pode sair por duas razões separadas:

  • Configuração incorreta. (falha na inicialização)
  • Exceção inesperada ao processar dados. (Falha no tempo de execução)

Então eu gostaria muito de manter o segundo comportamento, sem o primeiro, se possível.

description "MyJob"

respawn

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

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

De qualquer forma, eu poderia viver com os comportamentos duplos se os comandos inicial de reinicialização ou início retornassem um valor diferente de zero quando o script sair dentro de uma pequena janela.

Como posso fazer isso?

    
por Caustic 05.12.2013 / 18:19

1 resposta

1

Eu percebi isso.

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
    
por Caustic 05.12.2013 / 19:58