Si es un usuario habitual de Linux, debe haber encontrado el término 'Procesos Zombie '. Entonces, ¿qué son los Procesos Zombie? ¿Cómo se crean? ¿Son perjudiciales para el sistema? ¿Cómo elimino estos procesos? Sigue leyendo para conocer las respuestas a todas estas preguntas.
¿Qué son los Procesos Zombie?
Así que 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 finalizado el proceso, se debe eliminar de la tabla de procesos.
Puede ver los procesos actuales en el 'Monitor del sistema'.
Reemplace el pid con la identificación del proceso principal para que el proceso principal elimine todos los procesos secundarios que están inactivos y completados. Imagínalo así:“Te encuentras un cadáver en medio de la carretera, llamas a la familia del cadáver y se lo llevan de la carretera”. Pero muchos programas no están lo suficientemente bien programados para eliminar a estos niños zombis porque si lo fueran, no tendrías esos zombis en primer lugar. Entonces, lo único que se garantiza para eliminar a los niños zombis es matar a los padres.
Pero, a veces, algunos de estos procesos permanecen en la tabla de procesos incluso después de haber completado su ejecución.
Pero, a veces, algunos de estos procesos permanecen en la tabla de procesos incluso después de haber completado su ejecución.
Entonces, estos procesos que han completado su vida de ejecución pero aún existen en la tabla de procesos se denominan 'Procesos Zombie'.
¿Y cómo se crean exactamente?
Cada vez que ejecutamos un programa, crea un proceso principal y muchos procesos secundarios. Todos estos procesos secundarios utilizan recursos como la memoria y la CPU que les asigna 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 ser leída por el proceso principal, que luego llama al comando de espera para leer el estado de salida del proceso secundario para que el proceso secundario pueda eliminarse de la tabla de procesos. Si el padre lee la llamada de salida enviada correctamente por el proceso hijo, 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 secundario que ya terminó su ejecución y ahora está inactivo no se eliminará de la tabla de procesos.
¿Los procesos Zombie son dañinos para el Sistema?
“Eres el dueño de una empresa constructora. Usted paga salarios diarios a todos sus trabajadores dependiendo de cómo trabajen. 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. Viene todos los días y se sienta, ¡eso es todo!”
Tal trabajador es un ejemplo vivo de un proceso zombie. Pero, si tiene muchos trabajadores zombis, su sitio de construcción se llenará y podría ser difícil para las personas que realmente están trabajando.
Entonces, ¿cómo encontrar Procesos Zombie?
Inicie una terminal y escriba el siguiente comando:ps aux | grep Z Ahora obtendrá detalles de todos los procesos zombies en la tabla de procesos.
¿Cómo matar procesos Zombie?
Normalmente eliminamos procesos con el comando SIGKILL, pero los procesos zombi ya están muertos. No puedes matar algo que ya está muerto. Entonces, lo que debe hacer es escribir este comando:kill -s SIGCHLD pid Reemplace el pid con la identificación del proceso principal para que el proceso principal elimine todos los procesos secundarios que están muertos y completados. Imagínalo así:
“Encuentras un cadáver en medio de la carretera, llamas a la familia del cadáver y se lo llevan de la carretera.”
Pero muchos programas no están lo suficientemente bien programados para eliminar a estos niños zombis porque si lo fueran, no tendrías esos zombis en primer lugar. Entonces, lo único que se garantiza para eliminar Child Zombies es matar al padre.