Eu tenho um programa golang que quero reiniciar depois que ele termina em uma caixa Debian Squeeze. A coisa está servindo HTTP por trás de uma configuração mod_proxy do Apache 2. Não espero que o processo falhe, mas gostaria de ter algum seguro contra isso.
No Ubuntu, eu teria usado o iniciante para manter o processo vivo. O Debian não gosta do Upstart pelo que entendo, pois é um substituto do init.
Existe uma alternativa que reinicie um ou mais processos depois que eles terminam, que funciona no Squeeze e funciona bem com o init?
debian
init.d
debian-squeeze
Excluído
fonte
fonte
Respostas:
O melhor caminho a seguir é o
daemontools
. Eles permitem monitorar e reaparecer processos.Consulte a documentação em seu site: http://cr.yp.to/daemontools.html
fonte
supervisionar é uma alternativa leve e eficiente. No debian, ele é empacotado em daemontools . Você também pode ler esta pergunta relacionada , que lista algumas críticas de supervisão e menciona restartd como outra possibilidade.
Finalmente, se você deseja algo incrivelmente fácil de configurar, tive grande sucesso com o monit . Também é empacotado no Debian .
fonte
supervisionar ou monitorar são bons para manter vivo um único processo. Como você solicita manter "um ou mais" processos ativos, eu gostaria de conectar a supervisord . Certamente é um exagero gerenciar um único processo, mas se você precisar acompanhar vários processos, pode ser sua opção.
fonte
Uma opção é usar em
/etc/inittab
vez de inserir o script/etc/init.d/
.Você simplesmente adiciona uma entrada no seguinte formato:
<jobname>:<runlevels>:respawn:<command>
Infelizmente, isso significa que você não pode usar os comandos normais de iniciar / parar / reiniciar o init, mas deve garantir que seu script esteja sendo executado o tempo todo.
fonte
A maneira de distribuição cruzada de lidar com o processo é reiniciada com cron e um script simples. Você pode ver um artigo aqui Como manter um trabalho em execução no Linux
O script parece algo como
fonte