GNU/Linux >> Tutoriels Linux >  >> Linux

Comment tuer le processus zombie

Un zombie est déjà mort, vous ne pouvez donc pas le tuer. Pour nettoyer un zombie, il doit être attendu par son parent, donc tuer le parent devrait permettre d'éliminer le zombie. (Après la mort du parent, le zombie sera hérité par le pid 1, qui l'attendra et effacera son entrée dans la table de processus.) Si votre démon génère des enfants qui deviennent des zombies, vous avez un bogue. Votre démon devrait remarquer quand ses enfants meurent et wait sur eux pour déterminer leur statut de sortie.

Un exemple de la façon dont vous pourriez envoyer un signal à chaque processus qui est le parent d'un zombie (notez que c'est extrêmement grossier et peut tuer des processus que vous n'avez pas l'intention de faire. Je ne recommande pas d'utiliser ce type de marteau) :

# Don't do this.  Incredibly risky sledge hammer!
kill $(ps -A -ostat,ppid | awk '/[zZ]/ && !a[$2]++ {print $2}')

J'ai essayé :

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}

ça marchera :)


Trouvé sur http://www.linuxquestions.org/questions/suse-novell-60/howto-kill-defunct-processes-574612/

2) Voici un bon conseil d'un autre utilisateur (Merci Bill Dandreta) : Parfois

kill -9 <pid>

ne tuera pas un processus. Exécuter

ps -xal

le 4ème champ est le processus parent, tuez tous les parents d'un zombie et le zombie meurt !

Exemple

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 sont des zombies -

kill -9 18581 18582 18583

n'a aucun effet.

kill -9 31706

supprime les zombies.


Vous pouvez nettoyer un processus zombie en tuant son processus parent avec la commande suivante :

kill -HUP $(ps -A -ostat,ppid | awk '{/[zZ]/{ print $2 }')

Linux
  1. Comment tuer un processus dont le parent est Init ?

  2. Descendants de processus ?

  3. Comment tuer un processus sous Linux en utilisant la commande ?

  4. Comment définir le répertoire de travail du processus parent ?

  5. Comment mettre en pause/reprendre un processus sous Linux

Comment tuer les processus Zombie sous Linux

Comment trouver et tuer les processus zombies dans CentOS 8

Comment tuer les processus zombies dans Ubuntu 20.04 LTS

Comment tuer le processus Linux en cours d'exécution sur un port particulier

Comment tuer un processus sous Linux

Comment tuer les processus zombies dans Ubuntu