Matar un proceso zombie.

Haciendo un top desde consola, pude comprobar que uno de mis procesos era zombie.

gomalaca@mipc:~$ top

top - 00:43:24 up 13:23,  2 users,  load average: 0.28, 0.36, 0.28
Tasks: 102 total,   2 running,  99 sleeping,   0 stopped,   1 zombie
Cpu(s): 13.6%us,  1.3%sy,  0.0%ni, 85.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1035048k total,   896196k used,   138852k free,    77452k buffers
Swap:   546168k total,        0k used,   546168k free,   586120k cached  

Según la wikipedia, un proceso zombie (defunct) "es un proceso que ha completado su ejecución pero aún tiene una entrada en la tabla de procesos, permitiendo al proceso que lo ha creado leer el estado de su salida". Se pueden deber a errores de programación y pueden ser el síntoma de un sistema lento o que provoca problemas.
Para localizar este proceso hacemos uso del comando ps y buscamos aquel que tiene estado Z (que es el descriptor de este tipo de procesos):

$ ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'

Obtendremos:

Z     2048  2469 [proceso_zombie] <defunct>

Para poder acabar con él y que no aparezca en la tabla de procesos, al no responder a un kill "corriente", ejecutaremos como root:

# kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}'`

Si volvemos a hacer un top, nos encontramos que el "no muerto" ha desaparecido de la tabla de procesos.

gomalaca@mipc:~$ top

top - 01:04:49 up 13:45,  2 users,  load average: 0.15, 0.23, 0.22
Tasks: 100 total,   3 running,  97 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.3%us,  0.7%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1035048k total,   894868k used,   140180k free,    79264k buffers
Swap:   546168k total,        0k used,   546168k free,   586332k cached

Fuente:
http://62cm.blogspot.com/2007/11/procesos-zombie-en-linux.html