Procesos

Si eres es un usuario regular de Linux, debes haber encontrado el término ‘Procesos Zombies’. Entonces, ¿qué son los procesos Zombie? ¿Cómo se crean? ¿Son dañinos para el sistema? ¿Cómo mato estos procesos? Sigue leyendo para conocer las respuestas a todas estas preguntas.

¿Qué son los Procesos Zombies?

Entonces todos sabemos cómo funcionan los procesos. Lanzamos un programa, comenzamos nuestra tarea y una vez que nuestra tarea finaliza, finalizamos ese proceso. Una vez que el proceso ha finalizado, debe eliminarse de la tabla de procesos.

Puedes ver los procesos actuales en ‘System-Monitor‘.

Pero, a veces, algunos de estos procesos permanecen en la tabla de procesos incluso después de que hayan completado la ejecución.

Estos procesos que han completado su vida de ejecución pero que aún existen en la tabla de procesos se llaman ‘Procesos Zombies’.

¿Y cómo exactamente se crean?

Cada vez que ejecutamos un programa, crea un proceso principal y muchos procesos secundarios. Todos estos procesos secundarios usan recursos tales como memoria y CPU asignados por el kernel.

Una vez que estos procesos secundarios han terminado de ejecutarse, envían una llamada de salida y mueren. Esta llamada de salida debe leerla el proceso padre, que luego llama al comando wait para leer el estado de salida del proceso hijo para que pueda eliminarse de la tabla de procesos.

Si el padre lee la llamada de salida enviada correctamente por el proceso secundario, el proceso se elimina de la tabla de procesos.

Pero, si el padre no puede leer la llamada de salida del proceso secundario, el proceso hijo que ya ha finalizado su ejecución y ahora está muerto no se eliminará de la tabla de procesos.

¿Los procesos Zombie son dañinos para el sistema?

No. Dado que el proceso zombie no está haciendo ningún trabajo, no está utilizando ningún recurso ni está afectando a ningún otro proceso, no hay daño en tener un proceso zombie. Pero como el exit_status y otra información de proceso de la tabla de proceso se almacenan en la RAM, tener demasiados procesos Zombie a veces puede ser un problema.

Un ejemplo:

Eres el dueño de una empresa de construcción y pagas salarios diarios a todos tus trabajadores, según cómo funcionen. Un trabajador viene al sitio de construcción todos los días, simplemente se sienta allí, no tienes que pagarle, no hace ningún trabajo. Él solo viene todos los días y se sienta, ¡eso es todo!”

Tal trabajador es el ejemplo viviente de un proceso zombie. Pero, si tienes muchos trabajadores zombies, tu sitio se llenará y puede ser difícil para las personas que realmente están trabajando.

Entonces, ¿cómo encontrar procesos Zombie?

Abre una terminal y escribe el siguiente comando:

ps aux | grep Z

Ahora obtendrás detalles de todos los procesos zombies en la tabla de procesos.

Cómo matar los procesos Zombie?

Normalmente matamos procesos con el comando SIGKILL pero los procesos zombies ya están muertos. No puedes matar a algo que ya está muerto.

Entonces, ¿qué haces es escribir este comando?

kill -s SIGCHLD pid

Reemplaza el pid con el id del proceso principal para que el proceso principal elimine todos los procesos secundarios que están muertos y completados.

Imagínate así:

Encuentras un cadáver en el medio del camino, llama a la familia del cadáver y se llevan ese cuerpo lejos de la carretera“.

Pero muchos programas no están programados lo suficientemente bien como para eliminar a estos zombis-hijos, porque si lo fueran, no tendrías esos zombis en primer lugar. Entonces, lo único garantizado para eliminar zombies-hijos es matar al padre.

 

Fuente: Original | maslinux

Nota personal: Por favor, no seguir el tutorial como en la vida real, y no matar a padres e hijos.

¿Quién está en línea?

Hay 24039 invitados y ningún miembro en línea