Comment trouver et tuer le processus Zombie sur Linux


  • FrançaisFrançais


  • Bref : Ceci est une astuce rapide pour trouver des processus zombies sous Linux, puis les tuer. Vous apprenez également une ou deux choses sur les processus et les processus zombies.

    Avant de vous familiariser avec le processus Zombie, permettez-moi de rappeler ce qu’est un processus sous Linux.

    En quelques mots, un traiter est une instance en cours d’exécution d’un programme en performance. Il peut être au premier plan (processus interactif) ou en arrière-plan (processus non interactif ou automatique). Il peut s’agir d’un processus parent (créateur d’autres processus pendant l’exécution) ou d’un processus enfant (processus créé par d’autres).

    Sous Linux, à l’exception du premier processus init (ou systemd) avec le PID 0, tous les autres processus ont un processus parent. Les processus ont également leurs propres processus enfants.

    Ne me croyez pas ? Utilisez le pstree commande dans le terminal pour consulter l’arborescence des processus pour voir « l’arbre généalogique » des processus de votre système.

    Qu’est-ce qu’un processus Zombie sous Linux ?

    Lorsqu’un processus enfant meurt, le processus parent est informé afin qu’il puisse effectuer un nettoyage, comme libérer de la mémoire, etc. Cependant, le processus enfant passe à l’état zombie si le processus parent n’est pas au courant de sa mort. Pour le parent, l’enfant existe toujours mais le processus enfant est en fait mort. C’est ainsi que les processus zombies (également appelés processus défunts) sont créés et restent dans le système.

    Voici une excellente interprétation amusante du processus zombie par Turnoff.us :

    Avez-vous vraiment besoin de vous soucier des processus Zombie ?

    Ici, il est important de dire que les processus zombies ne sont pas aussi dangereux que son nom peut le paraître.

    Le problème peut survenir si votre système a une RAM limitée ou s’il y a trop de processus zombies qui consomment de la RAM. En outre, la plupart des processus Linux peuvent avoir un PID maximal défini sur 32768. S’il n’y a pas d’ID disponibles pour d’autres tâches productives, votre système peut tomber en panne.

    Cela arrive rarement, mais c’est une possibilité, surtout si un programme mal codé commence à induire de nombreux processus zombies.

    Dans ce cas, ce serait une bonne idée de trouver et de tuer le processus zombie.

    Comment trouver des processus zombies ?

    Un processus sous Linux peut avoir l’un des états suivants :

    • D = sommeil ininterrompu
    • je = inactif
    • R = en cours d’exécution
    • S = dormir
    • T = arrêté par le signal de contrôle de tâche
    • t = arrêté par le débogueur pendant la trace
    • Z = zombie

    Mais où voir les processus et leur statut respectif ? Un moyen simple consiste à utiliser le terminal et le commande supérieure.

    vue de commande supérieure
    Les principaux processus d’affichage des commandes et leur statut

    Comme vous pouvez le voir dans la capture d’écran ci-dessus, il y a 250 tâches (ou processus) au total, 1 est en cours d’exécution, 248 processus sont en veille et 1 est à l’état zombie.

    Maintenant, la question se pose, comment tuer le processus zombie ?

    Comment trouver et tuer un processus zombie ? Un processus zombie peut-il être tué ?

    tuer le processus zombie linux

    Un processus zombie est déjà mort. Comment tuer un processus déjà mort ?

    Dans les films de zombies, vous tirez sur les zombies dans la tête ou vous les brûlez. Ce n’est pas une option ici. Vous pouvez graver votre système pour tuer le processus zombie mais ce n’est pas une solution faisable 😉

    Certaines personnes suggèrent d’envoyer le signal SIGCHLD au processus parent. Mais il est plus susceptible d’être ignoré. L’autre option pour tuer le processus zombie est de tuer son processus parent. Cela semble brutal, mais c’est le seul moyen sûr de tuer les processus zombies.

    Donc, tout d’abord, listons les processus zombies pour connaître leur ID. Il peut être atteint par en utilisant la commande ps comme ça dans le terminal.

    ps ux | awk '{if($8=="Z+") print}'

    La 8e colonne de la sortie de la commande ps ux affiche l’état d’un processus. Vous demandez d’imprimer toutes les lignes correspondantes où l’état d’un processus est Z+ (indiquant l’état zombie).

    Une fois que vous avez identifié son ID de processus, récupérons l’ID de processus de son parent.

    ps -o ppid= -p <child_id>

    Alternativement, vous pouvez combiner les deux commandes ci-dessus de la manière suivante où il fournit directement le PID du processus zombie et le PID de son processus parent.

    ps -A -ostat,pid,ppid | grep -e '[zZ]'

    Ici, vous obtenez l’ID du processus parent, alors tuez enfin le processus en tapant la ligne de commande avec son processus d’ID respectif obtenu auparavant.

    kill -9 <parent_process_ID>
    tuer le processus parent
    Tuer le processus parent

    Vous pouvez vérifier si le processus zombie est tué ou non en exécutant à nouveau la commande ps ou même la commande top.

    Félicitations! Vous savez maintenant comment éliminer les processus zombies.

    Avec les contributions d’Abhishek Prakash.

    Source

    La Rédaction

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

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

    Copy code