O kill -3 na verdade encerra um processo java? Ou apenas gerar um dump de thread?

4

CentOS 5.9

Se eu executar kill -3 <java process pid> , o que realmente acontece? De acordo com este artigo do Red Hat , eu entendo que um Java Thread Dump é gerado, mas o processo é encerrado? Não parece ser baseado nos meus testes:

[root@foobox ~]# kill -3 14559

[root@foobox ~]# service foo status
foo (pid 14559) is running...

Em outras palavras: eu poderia coletar um dump de thread dessa maneira sem afetar o serviço?

    
por Mike B 10.09.2013 / 02:30

2 respostas

6

Espero que kill -3 não termine o processo da JVM.

Um dump de thread está impactando muito pouco o serviço durante a coleta do stacktrace, especialmente se milhares de threads estiverem em execução.

Observe que, se o sinalizador -Xrs for usado, a JVM não manipulará mais especificamente o sinal SIGQUIT , e esse sinal provavelmente encerrará o processo, a menos que um manipulador alternativo esteja em vigor em algum código nativo.

    
por 10.09.2013 / 02:51
5

link pode fornecer mais algumas informações.

Cabe ao processo determinar exatamente como ele reagirá quando receber SIGQUIT

Como esse sinal pode ser capturado, ignorado ou bloqueado pelo processo, pode não respeitar o kill . Se você quiser dar uma olhada ainda mais perto, sugiro que você faça o rastreamento do PID com strace enquanto envia SIGQUIT com kill.

    
por 11.09.2013 / 04:16