¿Kill -3 realmente finaliza un proceso de Java? ¿O simplemente generar un volcado de subprocesos?

¿Kill -3 realmente finaliza un proceso de Java? ¿O simplemente generar un volcado de subprocesos?

CentOS 5.9

Si corro, kill -3 <java process pid>¿qué sucede realmente? segúneste artículo de sombrero rojo, Entiendo que se genera un Java Thread Dump pero ¿se finaliza el proceso? No parece estar basado en mis pruebas:

[root@foobox ~]# kill -3 14559

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

En otras palabras: ¿podría recopilar un volcado de subprocesos de esta manera sin afectar el servicio?

Respuesta1

Con suerte, kill -3no finaliza el proceso JVM.

Un volcado de subprocesos tiene un impacto muy leve en el servicio durante la recopilación del seguimiento de pila, especialmente si se están ejecutando miles de subprocesos.

Tenga en cuenta que si -Xrsse utiliza el indicador, la JVM ya no manejará específicamente la SIGQUITseñal y entonces esa señal probablemente terminará el proceso a menos que exista un controlador alternativo en algún código nativo.

Respuesta2

https://superuser.com/questions/352147/what-does-kill-3-meanpuede proporcionarle más información.

Depende del proceso determinar cómo reaccionará exactamente cuando recibaSIGQUIT

Dado que esa señal puede ser captada, ignorada o bloqueada por el proceso, es posible que no respete el archivo kill. Si desea mirar aún más de cerca, le sugiero que rastree el PID stracemientras lo envía SIGQUITcon kill.

información relacionada