Comment tuer les zombie processus
J'ai lancé mon programme en avant-plan (un programme démon), et puis je l'ai tué avec kill -9
, mais je reçois un zombie en restant et je ne suis pas en mesure de le tuer avec kill -9
. Comment tuer un zombie processus?
Si le zombie est un mort de processus (déjà tué), comment je le supprime de la sortie 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]
- Ce n'
ps -o ppid 1163
dire? Qui est, qui est 1163 parent? C'est le processus qui doit être terminé.
Vous devez vous connecter pour publier un commentaire.
Un zombie est déjà mort, donc vous ne pouvez pas le tuer. Pour nettoyer un zombie, il doit être attendu par ses parents, afin de tuer les parents doivent s'efforcer d'éliminer les zombies. (Après que le parent décède, le zombie sera héritée par pid 1, ce qui vous attendra sur il et clair son entrée dans le processus de la table.) Si le démon est frai des enfants qui deviennent des zombies, vous avez un bug. Votre démon doit remarquer lors de ses enfants meurent et
wait
sur eux afin de déterminer leur statut de sortie.Un exemple de la façon dont vous pourriez envoyer un signal à tous les processus qui est le parent d'un zombie (notez que c'est très brut et peut tuer les processus que vous n'avez pas l'intention. Je ne recommande pas l'utilisation de cette sorte de marteau):
ps aux
?kill $(ps -A -ostat,ppid | awk '/[zZ]/{print $2}' | sort -u)
PPid
ligne si vouscat /proc/<pid>/status
Vous pouvez nettoyer un zombie processus par le meurtre de son processus parent avec la commande suivante:
grep
n'est pas nécessaire.ps ... | awk '/[zZ]/{print $2}'
J'ai essayé:
cela va fonctionner 🙂
Trouvé à http://www.linuxquestions.org/questions/suse-novell-60/howto-kill-defunct-processes-574612/
2) Voici une bonne astuce à partir d'un autre utilisateur (Thxs projet de Loi Dandreta):
Parfois
ne va pas tuer un processus. Exécuter
le 4ème champ est le processus parent, de tuer tous les zombies les parents et le zombie meurt!
Exemple
18581
,18582
,18583
sont des zombies -n'a aucun effet.
supprime les zombies.
init
pour moi, et maintenant je ne peux rien faire et je suis obligé de redémarrer... le zombie processus est de Java, en prenant 3,4 GO de 4 GO de RAMJ'ai essayé
et cela fonctionne pour moi.