Executando um script quando o processo de segundo plano falha

2

Estou executando um aplicativo criado usando a inicialização Spring. mas por último, às vezes eu estou vendo que ele caiu. Estou executando isso usando nohup. Eu quero anexar um gancho a ele, de modo que quando esse processo parar um script que execute o backup nohup.out e envie um email para notificar que o servidor falhou. Existe alguma maneira de fazer isso?

NOTA: Eu acho que isso não é necessário, mas apenas para obter informações. Estou usando o ubuntu

    
por Kumar Gaurav 12.09.2017 / 05:44

1 resposta

1
Uma abordagem inteligente apresentada por Kamil Maciorowski em respondam é vincular o aplicativo de segundo plano ao seu processo de limpeza simplesmente tornando-os comandos consecutivos dentro de um contexto de shell. Uma maneira "simples" de fazer isso seria

nohup sh -c "<Main Process>; <reporting process>" &

em que você executa de maneira assíncrona um shell nohup ed que executa o processo principal, e, em seguida, executa o processo de relatório / limpeza (incondicionalmente) após o processo principal terminar (por qualquer motivo). Uma solução mais robusta seria escrever um script curto:

#!/bin/sh
if <Main Process>
then
    <handling for normal termination>
else
    <handling for abnormal termination>
fi

ou

#!/bin/sh
<Main Process>
case "$?" in
    ︙
esac

e, em seguida, execute o script com nohup foo.sh &

Se sua única preocupação é o aplicativo morrer por causa de algum erro interno, Esta é provavelmente a melhor solução. Se houver o risco de algum processo outro enlouquecer e enviar um monte de sinais letais, então existe a possibilidade de que o escudo (que está aguardando o término do aplicativo) também pode ser surpreendido, e, portanto, não conseguir iniciar o processo de limpeza. Nesse caso, você pode querer considerar o superusuário do G-Man answer , o que sugere ter um processo de monitoramento que envia um sinal 0 para o aplicativo periodicamente. Se obtiver uma indicação de erro de que o processo não existe mais, então inicia a ação de limpeza.

    
por 12.09.2017 / 08:57