Como posso ter certeza de que um trabalho do Upstart para antes que outro trabalho do Upstart seja interrompido?

5

Às vezes, meu servidor é desligado por meio de um desligamento da ACPI e consegui que meu processo seja encerrado normalmente. No entanto, o meu processo (Job A) depende de outro processo (Job B) durante o seu desligamento normal, então agora quero ter certeza de que o Job B não irá parar até que o Job A tenha parado.

Ambos os processos são trabalhos Upstart, então eu tentei fazer isso adicionando isso ao arquivo / etc / init da Tarefa B:

# Don't stop until job A stops
pre-stop script
    while true
    do
        status A | grep -q "stop/waiting" && exit 0
        sleep 1
    done
end script

Isso não parece funcionar; quando eu desligo meu servidor por meio do desligamento da ACPI, o trabalho B geralmente é desligado antes do trabalho A, de modo que o trabalho A exibe mensagens de erro sobre o trabalho B não estar ativo.

Há algo errado com o meu script? Existe outra abordagem que eu deveria estar tomando? Ou não é possível fazer o que eu quero com o Upstart?

Pergunta relacionada: Como faço para parar um emprego antes de suas dependências?

    
por Aaron 17.02.2014 / 04:12

1 resposta

3

Você pode usar essas opções no trabalho A:

  • Pare antes do serviço dependente

    stop on stopping B
    
  • Comece após o serviço dependido

    start on started B
    

Referência: link

    
por user.dz 18.02.2014 / 01:18