En general, debe usar kill
(abreviatura de kill -s TERM
, o en la mayoría de los sistemas kill -15
) antes de kill -9
(kill -s KILL
) para darle al proceso de destino la oportunidad de limpiar después de sí mismo. (Los procesos no pueden detectar ni ignorar SIGKILL
, pero pueden y, a menudo, atrapan SIGTERM
.) Si no le da al proceso la oportunidad de terminar lo que está haciendo y limpiar, puede dejar archivos dañados (u otro estado) que no podrá entender una vez que se reinicie.
strace
/truss
, ltrace
y gdb
son generalmente buenas ideas para ver por qué un proceso atascado está atascado. (truss -u
en Solaris es particularmente útil; encuentro ltrace
con demasiada frecuencia presenta argumentos para las llamadas a la biblioteca en un formato inutilizable). Solaris también tiene un útil /proc
-herramientas basadas, algunas de las cuales se han portado a Linux. (pstack
suele ser útil).
Randal Schwartz solía publicar con frecuencia "Uso inútil de (x)" en las listas. Una de esas publicaciones fue sobre kill -9
. Incluye razones y una receta a seguir. Aquí hay una versión reconstruida (citada a continuación).
(Cita abominación)
No no no. No uses matar -9.
No le da al proceso la oportunidad de limpiar:
1) apagar las conexiones de enchufe
2) limpiar archivos temporales
3) informar a sus hijos que se va
4) restablecer sus características de terminal
y así sucesivamente y así sucesivamente.
Generalmente, envía 15, y espera uno o dos segundos, y si eso no funciona, envía 2, y si eso no funciona, envía 1. Si eso no funciona, ¡ELIMINA EL BINARIO porque el programa se comporta mal!
No uses matar -9. No saque la cosechadora solo para ordenar la maceta.
Solo otro uso inútil de Usenet,
(.firma)
Siempre debería estar bien hacer kill -9
, al igual que siempre debería estar bien apagar tirando del cable de alimentación. Puede ser antisocial y dejar algo de recuperación por hacer, pero debería funcionar y es una poderosa herramienta para los impacientes.
Digo esto como alguien que primero intentará matar simple (15), porque le da al programa la oportunidad de hacer algo de limpieza, tal vez simplemente escribiendo en un registro "salir en sig 15". Pero no aceptaré ninguna queja sobre el mal comportamiento de un kill -9.
La razón:muchos clientes hacen cosas que los programadores preferirían que no hacer. La prueba Random kill -9 es un escenario de prueba bueno y justo, y si su sistema no lo maneja, su sistema está roto.