linux - ver - procesos zombies windows
Cómo matar el proceso zombie (5)
Lo intenté
kill -9 $(ps -A -ostat,ppid | grep -e ''[zZ]''| awk ''{ print $2 }'')
Y funciona para mi.
Lancé mi programa en primer plano (un programa daemon), y luego lo maté con kill -9
, pero me queda un zombie y no puedo matarlo con kill -9
. Cómo matar un proceso zombie?
Si el zombie es un proceso muerto (ya fallecido), ¿cómo lo elimino de la salida de ps aux
?
root@OpenWrt:~# anyprogramd &
root@OpenWrt:~# ps aux | grep anyprogram
1163 root 2552 S anyprogramd
1167 root 2552 S anyprogramd
1169 root 2552 S anyprogramd
1170 root 2552 S anyprogramd
10101 root 944 S grep anyprogram
root@OpenWrt:~# pidof anyprogramd
1170 1169 1167 1163
root@OpenWrt:~# kill -9 1170 1169 1167 1163
root@OpenWrt:~# ps aux |grep anyprogram
1163 root 0 Z [cwmpd]
root@OpenWrt:~# kill -9 1163
root@OpenWrt:~# ps aux |grep anyprogram
1163 root 0 Z [cwmpd]
Lo intenté:
ps aux | grep -w Z # returns the zombies pid
ps o ppid {returned pid from previous command} # returns the parent
kill -1 {the parent id from previous command}
esto funcionará :)
Puede limpiar un proceso zombie matando su proceso principal con el siguiente comando:
kill -HUP $(ps -A -ostat,ppid | grep -e ''[zZ]''| awk ''{ print $2 }'')
Un zombie ya está muerto, por lo que no puedes matarlo. Para limpiar un zombie, su padre debe esperarlo, por lo que matar al padre debería funcionar para eliminar al zombi. (Después de que el padre fallece, el zombi lo heredará init
, que esperará y borrará su entrada en la tabla de procesos). Si tu daemon está engendrando niños que se convierten en zombies, tienes un error. Su daemon debería notar cuándo mueren sus hijos y wait
para determinar su estado de salida.
Un ejemplo de cómo se puede enviar una señal a cada proceso que sea el padre de un zombie (tenga en cuenta que esto es extremadamente crudo y podría matar procesos que no tiene la intención. No recomiendo usar este tipo de martillo):
kill $(ps -A -ostat,ppid | awk ''/[zZ]/ && !a[$2]++ {print $2}'')
Lo encontró en http://www.linuxquestions.org/questions/suse-novell-60/howto-kill-defunct-processes-574612/
2) Aquí un gran consejo de otro usuario (Thxs Bill Dandreta): A veces
kill -9 <pid>
no matará un proceso. correr
ps -xal
el 4 ° campo es el proceso principal, ¡mata a todos los padres de un zombi y el zombi muere!
Ejemplo
4 0 18581 31706 17 0 2664 1236 wait S ? 0:00 sh -c /usr/bin/gcc -fomit-frame-pointer -O -mfpmat
4 0 18582 18581 17 0 2064 828 wait S ? 0:00 /usr/i686-pc-linux-gnu/gcc-bin/3.3.6/gcc -fomit-fr
4 0 18583 18582 21 0 6684 3100 - R ? 0:00 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/cc1 -quie
18581
, 18582
, 18583
son zombis -
kill -9 18581 18582 18583
no tiene efecto.
kill -9 31706
elimina a los zombies.