LINUX

¿Qué es el proceso Zombie y el proceso Kill Zombie en Linux?

En el sistema operativo Linux, un proceso zombie o un proceso difunto es un proceso terminado (muerto), pero aún ocupa una entrada en la tabla de procesos. Normalmente, un proceso hijo que ha completado su ejecución enviará una señal SIGCHLD al proceso padre que lo ha creado. Luego, el proceso principal enviará una llamada al sistema de espera a través de la cual podrá leer el estado de salida del niño. Después de recibir la llamada del sistema de espera, la entrada del niño se eliminará de la tabla de proceso. En algunos casos, el padre puede ignorar la señal SIGCHLD, lo que hace que el proceso terminado aún exista en la tabla de procesos, lo que lo convierte en un proceso zombie. A veces, esto es deseable para que el proceso padre se asegure de que no asigne el mismo PID a otro hijo.

Cuando un proceso muere, liberará la memoria y otros recursos asignados. Por lo tanto, un proceso zombi no utilizará ningún recurso, excepto una entrada en la tabla de procesos. El problema puede comenzar solo cuando existe una gran cantidad de procesos zombies y el sistema se queda sin PID. En este tutorial, veremos cómo se puede detectar y terminar un proceso zombie.

Si el sistema genera una gran cantidad de procesos zombies, entonces debería tratarse de un error de aplicación que debe comprobarse en busca de parches disponibles para corregir el problema.

Detectando procesos zombies

Puede encontrar los procesos zombie usando el comando ps de Linux. Este comando enumerará todos los procesos con una columna «STAT». Si el proceso es un proceso zombi, la columna STAT tendrá el carácter «Z». Usando cualquiera de los siguientes comandos, puede encontrar los procesos zombies.

ps aux | awk '{ print $8 " " $2 }' | grep -w Z
ps –el | grep Z

Manejo del proceso zombie

Como los procesos zombies no consumen recursos, puede ignorarlos si el servidor funciona sin problemas. Pero en el caso de que el servidor se enfrente a una gran carga, una gran cantidad de procesos zombies pueden convertirse en un problema. Entonces, para deshacernos de los procesos zombie, podemos considerar cualquiera de los siguientes métodos.

1) Envío de señal SIGCHLD al proceso padre de zombie

Al recibir el comando SIGCHLD, el proceso padre debe enviar una llamada al sistema de espera que eliminará el proceso zombie. Esto se puede lograr ejecutando el siguiente comando.

kill -s SIGCHLD

PPID es el PID del proceso padre que invoca el proceso hijo zombi. Puede ejecutar el siguiente comando para encontrar el PPID de un proceso zombie.

ps aux -eo ppid | grep

Si el proceso padre ignora explícitamente la señal SIGCHLD, entonces debería considerar matar el proceso padre (paso 2).

2) Matar el proceso de los padres

Si los procesos zombies no pueden eliminarse, debe eliminar el proceso principal o reiniciar el servicio para deshacerse de los zombies. Cuando un padre muere, todos los procesos secundarios se convertirán en el proceso secundario del ‘proceso de inicio (PID 1)’. El proceso de inicio esperará a que los niños mueran enviando una señal de espera que a su vez elimina los procesos zombies. El proceso padre se puede matar usando el comando ‘kill’:

kill -9

Proporcione sus pensamientos y sugerencias sobre este artículo. Gracias por leer.

Leer también:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar