Como especificar um comando de encerramento do daemon com upstart?

8

Em uma configuração iniciante, como defino qual comando deve ser usado para desligar um servidor. Vamos dizer que eu tenho daemon que tem dois processos separados.

  • startup.sh - para iniciar o servidor
  • shutdown.sh - para desligar o servidor

Suponha que eu tenha um arquivo upstart que se pareça com isso.

description "Some Example Service"
author "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn

exec startup.sh 

Como eu digo ao upstart que ele deve chamar shutdown.sh quando desligar o servidor? Como o upstart normalmente espera desligar um daemon?

    
por ams 22.08.2013 / 22:04

1 resposta

9

Usar exec para iniciar o processo é bom, mas ao pará-lo, se você precisar executar um script específico ou um conjunto de comandos, poderá usar a sub-rotina pre-stop .

pre-stop exec shutdown.sh

Suponho que você tenha tentado apenas usar uma estrofe exec e não funcionou, possivelmente porque seu daemon requer alguma limpeza especializada. Observe que daemons bem comportados devem receber um sinal de upstart quando o trabalho é interrompido, e se eles lidarem com o sinal apropriadamente, nenhuma limpeza adicional deve ser necessária.

  

Parar um trabalho envolve enviar SIGTERM para ele. Se houver alguma coisa   que precisa ser feito antes do SIGTERM, faça aqui. Indiscutivelmente, serviços   deve lidar com SIGTERM muito graciosamente, então isso não deveria ser necessário.

     

se houver algo crítico, como um flush no disco, e aumentar o kill   tempo limite não é uma opção, pré-parada não é um mau lugar para fazer isso

Leia também esta seção para todo o fluxo de trabalho do que acontece quando você para um trabalho. Observe quando a pré-parada é executada e como um sinal é enviado ao processo posteriormente, que é como o upstart lida com a interrupção de trabalhos normalmente.

Minha fonte é o livro de receitas oficial do Upstart em: link

    
por roadmr 19.12.2013 / 21:08

Tags