Como devo gerenciar um processo de servidor de longa duração no Ubuntu?

Como devo gerenciar um processo de servidor de longa duração no Ubuntu?

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.

informação relacionada