ultima - unix ventajas y desventajas
Eliminando un proceso difunto en el sistema UNIX (5)
Tengo un proceso difunto en mi sistema:
abc 22093 19508 0 23:29 pts/4 00:00:00 grep ProcA
abc 31756 1 0 Dec08 ? 00:00:00 [ProcA_my_collect] <defunct>
¿Cómo puedo eliminar el proceso anterior sin reiniciar la máquina? Lo he intentado con
kill -9 31756
sudo kill -9 31756
¿Verificaste un proceso infantil que podría necesitar ser asesinado primero? A veces el atasco está por el ps -ef --forest
... Prueba ps -ef --forest
para ver lo que puede estar debajo de él (si hay algo), luego mata eso primero, luego el que ya conoces
El proceso probablemente se cuelga, por ejemplo, ignorando señales como SIGPIPE, verifique con strace -p <pid>
lo que está sucediendo aquí.
Has matado el proceso, pero un proceso inactivo no desaparece de la tabla de proceso hasta que su proceso principal realiza una tarea llamada "cosecha" (esencialmente llamando a wait(3)
para que ese proceso lea su estado de salida). Los procesos muertos que no se han cosechado se llaman " procesos zombies ".
La identificación del proceso padre que ves para 31756 es la ID del proceso 1, que siempre pertenece a init
. Ese proceso debería cosechar sus procesos zombies periódicamente, pero si no puede, seguirán siendo zombies en la tabla de proceso hasta que reinicies.
Probablemente no puedas si matar al padre no lo resuelve. Por alguna razón, los sistemas no están recopilando ese proceso zombie.
FWIW, lo he visto bastante en el boxen de SCO Openserver que solía administrar. Uso intensivo de múltiples usuarios y bajos recursos del sistema, pero no pareció doler nada. Solo me molestó. :)
Si kill -9 no puede matar un proceso, la causa casi siempre es un error del controlador o del sistema operativo.
El proceso init ha adoptado el proceso, pero no puede cosecharlo. Es decir: cuando init llama espera (2) ese proceso no se devuelve. Uno de los propósitos principales de init es cosechar a los niños huérfanos muertos, por lo que el problema no es que su padre murió antes de ser cosechado. Piense: De lo contrario, ¿quién recoge los resultados de un proceso nohup después de cerrar la sesión?
Es improbable que matar a los niños del proceso difunto ayude a menos que estén relacionados de alguna manera con el error en particular que estás viendo.