En sistemas operativos Unix, un proceso zombie o «defunct» (difunto) 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. Metafóricamente, el proceso hijo ha muerto pero su «alma» aún no ha sido recogida.
Cuando un proceso acaba, toda su memoria y recursos asociados a él se desreferencian, para que puedan ser usados por otros procesos. De todas formas, la entrada del proceso en la tabla de procesos aún permanece. Al padre se le envía una señal SIGCHLD indicando que el proceso ha muerto; el manejador para esta señal será típicamente ejecutar la llamada al sistema wait, que lee el estado de salida y borra al zombie. El ID del proceso zombie y la entrada en la tabla de procesos pueden volver a usarse.
Para listar los procesos zombies ejecutamos lo siguiente:
rokitoh@red-orbita:~$ ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’
Zl 1 3293 [rhythmbox] <defunct>
Una vez listado y verificado que es el proceso el cual queremos matar tecleamos lo siguiente:
kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’ | awk ‘{print $2}’`