Processus zombies

Lire une entrée de animé Je me suis souvenu que dans un forum, quelqu'un avait demandé de l'aide car son système était lent, certaines des solutions étant axées sur les processus.

Les principaux états des processus sous Linux sont:
Dormir (S) : Processus qui attendent leur tour pour s'exécuter.
Courir (R) : Processus en cours d'exécution.
En attente (D) : Processus en attente d'une opération d'entrée / sortie à terminer.
Zombi (Z) : Processus qui se sont terminés mais continuent à apparaître dans le tableau des processus. Ils peuvent être causés par des erreurs de programmation et peuvent être le symptôme d'un système lent ou à l'origine de problèmes.

Un processus Zombie est un processus qui n'a jamais reçu de signal du processus parent qui l'a créé, un processus enfant est celui qui a son origine dans un processus de niveau supérieur connu sous le nom de processus parent qui est chargé d'envoyer les signaux aux processus enfants généré par celui-ci pour indiquer que sa durée de vie est terminée.

Ils peuvent être causés par des erreurs de programmation et peuvent être le symptôme d'un système lent ou causant des problèmes. Cette situation se produit généralement, également parce qu'une configuration n'a pas été envisagée par le développeur.

Sur Wikipédia, vous pouvez En savoir plus sur ces processus.

En exécutant la commande supérieure, nous pouvons voir en temps réel les processus en cours d'exécution dans le système, et cela indiquera s'il y en a dans un état zombie, mais cela n'indique pas lequel est.

processus

Pour voir tous les processus, tapez dans le terminal: psaux, et pour ne voir que les zombies: ps -el | grep 'Z'o ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

alf @ Alf ~ $ ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

Z 1945

Si lors de la liste des processus, on apparaît avec un statut Z, cela signifie qu'il s'agit d'un zombie, ce qui signifie à son tour que l'application n'est pas bien résolue ou a des bugs, sachant que son PID peut être éliminé en exécutant dans le terminal une commande similaire à, dans cet exemple: 

alf @ Alf ~ $ tuer -9 1945

Lorsque vous avez de nombreux processus zombies ou au moins plus d'un, vous pouvez utiliser la commande suivante qui les tue, cela ne fonctionne que pour cela, si vous l'exécutez sans avoir de processus zombies, rien ne se passera:

alf @ Alf ~ $ sudo kill -HUP `ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]' | awk '{print $ 2}' ''

salutations


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   correct dit

    🙁

  2.   oscar dit

    Merci, très bonne contribution, je vais sauvegarder les commandes pour faire des vérifications périodiques.

  3.   Josh dit

    Merci, bel article.

  4.   msx dit

    Quelques précisions concernant votre article:

    Le terme «processus Zombie» est techniquement inapproprié et ceux d'entre nous qui ont un peu d'expérience avec GNU / Linux devraient éviter de l'utiliser car il n'y a pas de processus en cours d'exécution en lui-même, mais c'est seulement une référence à un processus qui n'existe plus dans le système et il n’a pas communiqué son identifiant.

    Un "processus zombie" est en fait l'entrée dans la table de mappage de l'identifiant de processus (descripteur de processus), juste cela, donc il ne consomme pas de ressources au-delà de quelques octets de mémoire que le système utilise pour garder une trace de la table de processus.

    Le seul problème qu'il peut y avoir avec les descripteurs de registre fantômes (ou zombies) est que s'ils apparaissent trop rapidement, ils pourraient théoriquement occuper toute la table d'allocation des descripteurs de processus, laissant le système sans espace pour de nouveaux enregistrements, ce qui impossible d'exécuter de nouveaux programmes - qui enregistrent leurs processus - qui finissent par raccrocher la machine.

    Cependant, cela est presque impossible car dans les systèmes 32 bits, il y a 32767 espaces pour enregistrer les processus (rarement ou jamais utilisés) et le double dans un système 64 bits.

    La seule façon de faire planter un système avec des processus morts mal supprimés est de créer les processus et de les tuer rapidement sans nettoyer correctement le descripteur de processus (c'est-à-dire créer des «processus zombies») mais, avouons-le, si quelqu'un veut accrocher un système, il existe des moyens beaucoup plus directs que cela. pour commencer à créer rapidement de nouveaux processus de manière exponentielle qui bloquent le système et le bloquent; l'un des moyens d'y parvenir avec une bombe à fourche:

    : () {: |: &};:

    Vous pouvez rendre le système relativement résistant à une bombe de fourche en configurant correctement /etc/security/limits.conf, même s'il faut tenir compte du fait que plus nous limiterons la possibilité de créer de nouveaux processus, nous serons en mesure d'exécuter moins d'applications simultanément sur notre système. Cependant, c'est un outil valable pour tous les administrateurs système paranoïaques qui veulent avoir un contrôle très fin sur leurs systèmes!

    Cet article contient de bonnes informations sur les descripteurs de processus non valides:
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    Et en cela, il y a une explication claire sur le fonctionnement d'une bombe à fourche: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    jotaele dit

      msx: «Le terme« processus Zombie »est techniquement inapproprié et ceux d'entre nous qui ont un peu d'expérience dans GNU / Linux devraient éviter de l'utiliser…» Ha ha ha. Il n'y a que quelque chose de plus grand que votre fierté: votre mauvais goût. Hé, c'est de mauvais goût ce que tu as fait, si tu veux donner une conférence, en obtenir une à la faculté, ou mettre ton propre blog et écrire ce que tu veux, mais venir ici pour corriger l'appartement en bon Alf est vraiment de mauvais goût .

      1.    Ferdinand Rojas dit

        La vérité m'a paru un commentaire assez intéressant. Bien plus que le post

  5.   Platonov dit

    merci très intéressant.

  6.   Pourritures87 dit

    excellent article merci

  7.   Alf dit

    msx
    «Le terme« processus Zombie »est techniquement inapproprié et ceux d'entre nous qui ont une petite expérience de GNU / Linux devraient éviter de l'utiliser»

    Nous devrons avertir les développeurs, car comme vous le verrez, le terme zombie est également utilisé, là je l'ai lu sur la console.

    salutations

  8.   Ciux dit

    Félicitations, très bon article, j'avais toujours eu des doutes sur le fait que c'étaient des PZ mais je n'avais jamais eu le temps d'enquêter, maintenant je vais à la page et je trouve la réponse merci …….

  9.   Truko22 dit

    Dans KDE avec contrôle + évasion, les activités du système disparaissent et nous pouvons tuer ces zombies rapidement.

  10.   Pluie dit

    Une correction, c'est un ZOMBIE pas un ZOMBIE processus
    Zombie est en anglais
    Zombi en espagnol

  11.   Élynx dit

    Luxe, merci!.

  12.   Roberto dit

    Premièrement, le terme processus zombie semble totalement correct. Le terme est également le moins important.
    Le fait est que, comme l'indique msx, et le même wikipedia (j'ai lu l'article), le processus zombie est vraiment mort.
    «Lorsqu'un processus se termine, toute sa mémoire et les ressources associées sont déréférencées, afin de pouvoir être utilisées par d'autres processus. Quoi qu'il en soit, l'entrée de processus dans la table de processus reste toujours »
    Autrement dit, le processus ne prend plus de ressources système, donc la charge sur le système est minime, comme expliqué par msx.
    Cependant, la seule chose dont il dispose est une entrée invalide dans la table de processus ... qui, s'il y en a des milliers, cela pourrait être une charge (après tout, le processeur doit lire la table de processus et il lirait beaucoup d'informations inutiles) en plus de refléter de mauvaises pratiques de programmation (quelqu'un fait des applications de mauvaise qualité).
    Mais en soi, l'explication du message n'est pas si correcte et la bonne serait celle donnée par msx.