ter trabalho iniciante impedir que trabalho diferente pare

0

Estou tentando encontrar uma maneira de fazer com que um trabalho iniciante, que é acionado quando outro trabalho está sendo interrompido, evite que esse outro trabalho realmente pare.

Basicamente eu tenho um serviço que roda, deixa o fingir apache, e eu quero criar outro trabalho de arranque que impedirá que o serviço seja desligado a menos que certas condições sejam atendidas. Então, criei um trabalho de "tarefa" para executar algumas verificações e, se essas verificações não forem aprovadas, o apache não poderá ser encerrado.

Eu achei que poderia fazer algo como o seguinte:

start on stopping apache

task
script
if some_condition; then
    start --no-wait apache
fi
end script

Mas o outro serviço ainda é desligado, ele é imediatamente reiniciado. Eu não posso ter isso, não deve desligar.

Coloquei uma instrução sleep no script acima e isso atrasa o serviço de parar. Então, se o serviço ainda está em execução, eu acho que deveria ser capaz de evitar que ele seja desligado.

    
por Patrick 21.02.2014 / 05:03

1 resposta

0

Então, depois de vasculhar o código-fonte iniciado, a única vez que um script upstart pode anular uma operação é na fase 'pré' (pré-início / pré-parada). Quando você usa um gatilho como start on stopping foo , o serviço recebe o evento após a fase pre-stop de 'foo', portanto, não é possível iniciar o backup sem que ele pare antes.

No entanto, quando você tem uma condição start on stopping foo , o serviço 'foo' não pára até que o serviço que ouve o evento seja concluído. Então, o que acabei fazendo é simplesmente repetir para sempre até que a condição que estou verificando seja atendida. Não é a melhor solução, mas funciona.

Uma solução alternativa também teria sido criar um arquivo .override para o serviço e colocar um script pre-stop na substituição. A condição pode então ser verificada no pre-stop e a emissão de start impedirá que o serviço pare.

Infelizmente, isso não funciona muito para mim devido a outros motivos complicados, mas pode ser uma opção para qualquer outra pessoa que tente fazer isso.

    
por Patrick 20.03.2014 / 03:15