Como descobrir porque um processo Java morreu sem deixar vestígios no Linux

2

Um processo java em execução em nossa máquina SUSE Linux morreu sem deixar rastro de porque ele morreu. Se ele foi morto com kill, ele teria sido registrado e nós saberíamos porque o processo intercepta esse sinal. Se ele caiu, teríamos visto um dump de núcleo. Se ele morresse devido a uma exceção, nós saberíamos devido ao log de exceções. No entanto, o processo simplesmente desapareceu. Eu sei que estava correndo e depois não estava funcionando.

Eu verifiquei o histórico bash de todos os usuários, e não há nenhuma indicação de um kill -KILL sendo executado (esta é a única maneira que eu posso pensar que este processo pode morrer sem deixar vestígios).

Eu suspeito que kill -KILL ou kill -9 tenham causado a morte do processo sem deixar vestígios.

Minhas perguntas:

  1. Existe alguma maneira de o Linux matar um processo silenciosamente?
  2. Existe alguma maneira de descobrir se um processo morreu no passado com um kill -KILL?
por user3357124 06.03.2014 / 16:12

1 resposta

1

Re (1): Um kill -9 pid irá analizar o processo, sem sequer chegar a dizer as últimas palavras. Mesmo para a maioria das outras exceções não identificadas. Sair da memória pode certamente ser uma razão para uma morte silenciosa.

Re (2): A menos que seja um aviso pai (chama uma das famílias wait(3) e derrama os beans), não. Na maioria das vezes, os processos de longa duração são reparados em init(1) , a menos que você tenha um bate-papo especial, ele coletará silenciosamente as certidões de óbito e continuará com a vida.

Se o seu sistema usa systemd , você pode configurá-lo para monitorar o processo de perto.

    
por 06.03.2014 / 18:09

Tags