Siempre dudo mucho en ejecutar kill -9
, pero veo que otros administradores lo hacen casi de forma rutinaria.
Me imagino que probablemente haya un término medio sensato, así que:
- Cuándo y por qué debería
kill -9
¿ser usado? ¿Cuándo y por qué no? - ¿Qué se debe probar antes de hacerlo?
- ¿Qué tipo de depuración de un proceso "colgado" podría causar más problemas?
Respuesta aceptada:
Generalmente, deberías 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 capturar o ignorar SIGKILL
, pero pueden capturar SIGTERM
, y a menudo lo hacen. .) 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 /proc
útiles -herramientas basadas, algunas de las cuales se han portado a Linux. (pstack
suele ser útil).