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

1

Eu 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 corretamente. O que eu gostaria é o seguinte:

  • um comando simples start / stop / restart
  • com pouca configuração possível, não quero configurar coisas grandes como monit ou escrever 500 linhas de scripts de shell
  • manipular stdout / stderr / failures em um arquivo de log
  • gerencie um pidfile de forma que haja apenas um arquivo pid se o processo estiver em execução (isso parece ser realmente difícil de fazer manualmente usando scripts de shell corretamente)
  • (opcional) poderá fazer algo se o binário falhar
  • (opcional) será iniciado automaticamente se o servidor for reinicializado e / ou o aplicativo travar

O que eu estou procurando é uma solução leve que idealmente funciona com o Ubuntu Server pronto para uso, sem muita configuração.

    
por Jakub Arnold 01.03.2015 / 11:19

1 resposta

2

Para o Ubuntu, acho que o Upstart é o que você está procurando.

link Esta pergunta do AskUbuntu tem excelentes informações sobre como começar o que você está fazendo.

Em poucas palavras, 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
  • respawn no acidente
  • executado na inicialização
  • fazendo login em /var/log/upstart/mybinary.log

O livro de receitas do Upstart como toda a informação que você precisa: link

Como um aparte, eu sinto que devo mencionar que o Ubuntu está planejando aposentar o Upstart em favor do Systemd, mas não há um roteiro planejado.

    
por 01.03.2015 / 20:02