Para empezar echemos un vistazo a los principales estados de los procesos en Linux:
- Sleeping (S): Procesos que están esperando su turno para ejecutarse.
- Running (R):Procesos que están en ejecución.
- Waiting (D): Procesos esperando a que se finalice alguna operación de Entrada/Salida.
- Zombie (Z): Procesos que han terminado pero que siguen apareciendo en la tabla de procesos.
Se pueden deber a errores de programación y pueden ser el síntoma de un sistema lento o que provoca problemas. En la Wikipedia se puede leer más acerca de estos procesos. Ejecutando el comando ‘top’ podemos ver en tiempo real los procesos que se están ejecutando en el sistema. En la parte superior derecha se puede ver que hay un proceso zombie: Desde ‘top’ podemos ver que hay procesos zombie, pero no podemos ver cuál es.
Para ello debemos listar los procesos del sistema con ‘ps’ y buscando los que tienen estado Z (que es el descriptor de este tipo de procesos como vimos anteriormente):
ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’
Este proceso debe desaparecer de la tabla de procesos, pero no responderá a un ‘kill’ «corriente». ¿Cómo lo podemos matar? Pues así:
kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’ | awk ‘{print $2}’`
Enjoy the power
Salu2