Lancé mi programa en primer plano (un programa demonio), y luego lo maté con kill -9
, pero me queda un zombie y no puedo matarlo kill -9
. ¿Cómo matar un proceso zombie?
Si el zombie es un proceso muerto (ya muerto), ¿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 [anyprogramd]
root@OpenWrt:~# kill -9 1163
root@OpenWrt:~# ps aux |grep anyprogram
1163 root 0 Z [anyprogramd]
ps -o ppid 1163
dice Es decir, ¿quién es el padre de 1163? Ese es el proceso que debe ser terminado.Respuestas:
Un zombie ya está muerto, así 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 muere, el zombi será heredado por pid 1, que esperará y borrará su entrada en la tabla de proceso). Si su demonio está generando niños que se convierten en zombis, tiene un error. Tu demonio debería notar cuándo mueren sus hijos y
wait
sobre ellos para determinar su estado de salida.Un ejemplo de cómo puede enviar una señal a cada proceso que es el padre de un zombie (tenga en cuenta que esto es extremadamente crudo y podría matar procesos que no tiene intención. No recomiendo usar este tipo de martillo):
fuente
ps aux
?kill $(ps -A -ostat,ppid | awk '/[zZ]/{print $2}' | sort -u)
PPid
fila si ustedcat /proc/<pid>/status
Puede limpiar un proceso zombie eliminando su proceso padre con el siguiente comando:
fuente
grep
no es necesario.ps ... | awk '/[zZ]/{print $2}'
Lo intenté:
esto funcionará :)
fuente
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
No matará un proceso. correr
El cuarto campo es el proceso de los padres, mata a todos los padres de un zombie y el zombie muere.
Ejemplo
18581
,18582
,18583
Son zombis -no tiene efecto.
elimina a los zombies
fuente
init
para mí, y ahora no puedo hacer nada y me veo obligado a reiniciar ... el proceso zombie es Java, con 3.4GB de 4GB de RAMLo intenté
Y funciona para mi.
fuente