Los zombis son procesos MUERTOS. No pueden ser 'matar' (No puedes matar a los MUERTOS). Todos los procesos finalmente mueren, y cuando lo hacen se convierten en zombis. No consumen casi recursos, ¡lo cual es de esperar porque están muertos! La razón de los zombis es que el padre (proceso) del zombi puede recuperar el estado de salida del zombi y las estadísticas de uso de recursos. El padre le indica al sistema operativo que ya no necesita al zombi usando una de las llamadas al sistema wait ().
Cuando un proceso muere, sus procesos secundarios se convierten en hijos del proceso número 1, que es el proceso init. Init está '' siempre '' esperando que los niños mueran, para que no permanezcan como zombis.
Si tienes procesos zombies, significa que esos zombis no han sido esperados por sus padres (mira PPID mostrado por ps -l
). Tiene tres opciones: arreglar el proceso principal (hacer que espere); matar al padre; o vivir con eso Recuerda que vivir con eso no es tan difícil porque los zombies ocupan poco más de una línea adicional en la salida de ps.
Los zombis se pueden identificar en la salida del comando ps de Unix mediante la presencia de una "Z" en la columna STAT. Los zombis que existen por más de un período corto de tiempo típicamente indican un error en el programa principal. Al igual que con otras filtraciones, la presencia de unos pocos zombis no es preocupante en sí misma, pero puede indicar un problema que se agravaría con cargas más pesadas.
Para eliminar zombies de un sistema, la señal SIGCHLD puede enviarse al padre manualmente, usando el comando kill. Si el proceso principal todavía se niega a cosechar el zombi, el siguiente paso sería eliminar el proceso principal. Cuando un proceso pierde su padre, init se convierte en su nuevo padre. Init ejecuta periódicamente la llamada al sistema de espera para recoger cualquier zombi con init como principal.
También hay procesos huérfanos que son un proceso de computadora cuyo proceso principal ha finalizado o terminado.
Un proceso puede quedar huérfano durante la invocación remota cuando el proceso del cliente se bloquea después de realizar una solicitud al servidor.
Los huérfanos desperdician recursos del servidor y pueden dejar a un servidor en problemas (esta es la mayor diferencia de recursos entre zombis y huérfanos (excepto si ve una película huérfana zombie). Sin embargo, hay varias soluciones para el problema del proceso huérfano:
-
La exterminación es la técnica más comúnmente utilizada; en este caso, el proceso huérfano se mata.
-
La reencarnación es una técnica en la cual las máquinas periódicamente intentan localizar a los padres de cualquier cálculo remoto; en ese punto los procesos huérfanos son asesinados.
-
La caducidad es una técnica en la que a cada proceso se le asigna una cierta cantidad de tiempo para terminar antes de ser asesinado. Si es necesario, un proceso puede "pedir" más tiempo para terminar antes de que expire el tiempo asignado.
Un proceso también puede quedar huérfano ejecutándose en la misma máquina que su proceso principal. En un sistema operativo tipo UNIX, cualquier proceso huérfano será adoptado inmediatamente por el proceso especial del sistema "init". Esta operación se llama reaparecer y ocurre automáticamente. Aunque técnicamente el proceso tiene el proceso "init" como su elemento primario, todavía se llama proceso huérfano ya que el proceso que lo creó originalmente ya no existe.
Más información:
enlace
enlace
enlace
Cómo identificarse y matar el proceso de colgar, cuando el sistema se cuelga y reacciona lentamente ante la entrada del usuario?
Asesinato un proceso en ejecución en una máquina Ubuntu remotamente desde una máquina de Windows que está en LAN