O serviço Upstart não inicia quando um serviço do qual depende começa

1

Eu tenho um serviço chamado serviço C. Ele tem as seguintes condições de início e parada:

start on ( started A and started B)
stop on (stopping A or stopping B)

Quando eu paro manualmente A, C pára. No entanto, quando eu inicio A, C não inicia a menos que eu pare e comecei B também.

Eu quero que C seja executado sempre que A e B estiverem em execução, e as condições acima não alcançarem isso. Alguma idéia de como as condições iniciais devem se parecer?

Obrigado!

    
por Sia 21.01.2014 / 07:14

1 resposta

0

Altere sua estrofe de início para 'ou' assim:

start on ( started A or started B )

Em seguida, adicione um script de pré-inicialização que verifica se ambos os serviços estão sendo executados e aborte o início, se não estiverem. Algo como:

pre-start script
  if [ -z 'status A | grep running' ] || [ -z 'status B | grep running' ]; then
    stop ; exit 0
  fi
end script

Veja a seção "pré-início" do livro de receitas . Provavelmente, existe uma maneira melhor de verificar se um serviço está em execução, mas isso funciona para mim. Adapte-se às suas necessidades.

    
por Brian.D.Myers 21.01.2014 / 19:50