Eu tenho um script Python muito simples que eu gostaria de estar sempre executando no meu servidor Ubuntu 12.04. Pensei em usar o upstart + monit. O problema é que essas ferramentas parecem bastante complicadas para um mortal simples como eu, e não consigo encontrar um exemplo simples na web.
Upstart + monit é um exagero? Alguém conhece uma alternativa mais simples ou um bom tutorial para upstart + monit? Se eu apenas quero ter certeza de que o script está sempre em execução, o monit é obrigatório?
python
upstart
monitoring
sebpiq
fonte
fonte
Respostas:
A maneira mais simples de fazer isso é colocar isso em
/etc/init/something.conf
:O reaparecimento iniciará novamente se for morto ou sair diferente de zero (como uma exceção não capturada). Isso funcionará desde o Ubuntu 10.04.
Se você tem 12.04, pode ficar mais chique. O acima irá executar seu script como root. Na versão 12.04, você pode adicionar setuid / setgid:
Se o seu script sair quando não houver rede disponível e você planeja executá-lo em uma conexão de rede instável, conserte-o e mantenha-o vivo / tente novamente. Mas, se não puder, talvez seja necessário iniciá-lo manualmente sempre que um dispositivo de rede aparecer. Então você pode colocar isso em
/etc/network/if-up.d/yourscript
(torne-o executável com chmod + x)Onde o seu script é apenas algo arbitrário e exclusivo para esse script específico, e "algo" é igual ao nome do trabalho (como o
/etc/init/something.conf
sugerido anteriormente).fonte
upstart
certo? Isso significa que o script também será iniciado na inicialização (o que seria ótimo!)? Erespawn
é suficiente para que você não precise configurarmonit
?A abordagem usual desde os tempos antigos era gravar um arquivo contendo um registro de data e hora ou o ID do processo
/tmp
e, em seguida, verificar se esse ID de processo ainda estava em execução ou, respectivamente, se o registro de data e hora ainda era recente.Você também pode fazer um simples
while [ 1 ]; do phyton-script.ph; done
que reinicie o script, caso ele retorne.Para mais possibilidades, forneça mais informações sobre seu script. Especialmente por que você espera que ele saia ou trava inesperadamente.
fonte