Estamos vendo um problema ao usar o monitor durante uma seqüência de reinicialização ou desligamento. Primeiro alguns antecedentes da parte da configuração do monit.
Durante um desligamento / reinicialização do sistema, primeiro um comando é enviado para monitorar a interrupção do monitoramento de todos os serviços. Depois disso, todos os scripts de kill em /etc/init.d/ são chamados. Na maioria das vezes funciona, mas há um caso de canto em que o monit inicia um aplicativo quando o aplicativo já está encerrado normalmente, o que está errado. Eu tentei capturar o problema no diagrama de Sequência abaixo.
Eu olhei para o código-fonte monit e parece que quando a verificação de um serviço falha, o monit tenta executar o comando mencionado ao bifurcá-lo e executá-lo. Portanto, esse processo bifurcado ainda pode estar em andamento quando monit recebe um comando unmonitor. Também parece que o monit não para os processos iniciados quando recebe este comando e retorna imediatamente.
Existe uma maneira de esperar até que todos os processos filhos iniciados por monit estejam completos?
Alguma outra recomendação para evitar esse problema?