Tenho um aplicativo (na forma de um único binário) que preciso executar em um dos meus servidores e gostaria de poder controlar seu ciclo de vida adequadamente. O que eu gostaria é o seguinte:
- simples comando iniciar/parar/reiniciar
- o mínimo de configuração possível, não quero configurar coisas grandes como monit ou escrever 500 linhas de scripts de shell
- lidar com stdout/stderr/failures em um arquivo de log
- gerenciar um arquivo pid de forma que só exista um arquivo pid se o processo estiver em execução (isso parece ser muito difícil de fazer manualmente usando scripts de shell corretamente)
- (opcional)ser capaz de fazer algo se o binário falhar
- (opcional)iniciar automaticamente se o servidor for reinicializado e/ou o aplicativo travar
O que procuro é uma solução leve que funcione idealmente com o Ubuntu Server pronto para uso, sem muita configuração.
Responder1
Para Ubuntu, eu achoSubir na vidaé o que você está procurando.
https://askubuntu.com/questions/19320/how-to-enable-or-disable-services Esta pergunta do AskUbuntu contém excelentes informações sobre como começar o que você está fazendo.
Resumindo, copie o seguinte para /etc/init/mybinary.conf.
description "My Binary"
author "Jakub Arnold <[email protected]>"
start on (local-filesystems and net-device-up)
stop on runlevel [!2345]
respawn
pre-start script
RUN_MODE="daemons"
end script
exec mybinary
Isso deve ajudá-lo com o seguinte:
- Gerenciamento de serviços com 'service mybinary start/stop/status'
- Gerenciamento de arquivos PID
- reaparecer em caso de acidente
- execute na inicialização
- registrando em /var/log/upstart/mybinary.log
O livro de receitas Upstart contém todas as informações que você precisa:http://upstart.ubuntu.com/cookbook/
À parte, sinto que devo mencionar que o Ubuntu está planejando aposentar o Upstart em favor do Systemd, mas nenhum roteiro foi traçado.