Processus de zombie. Tout le monde n'a pas entendu parler de ce mot intéressant mais effrayant lié au système d'exploitation Linux. Sur un ordinateur personnel, les processus zombies peuvent ne pas être une menace pour un utilisateur régulier, mais lorsqu'il s'agit de serveurs Linux, ces processus doivent être identifiés et arrêtés.

De tels processus peuvent causer des problèmes avec la table de processus de votre système et, à leur tour, altérer le bon fonctionnement de votre machine. Par conséquent, dans cet article, nous aborderons en détail les processus zombies, ainsi qu'un guide complet sur la recherche et l'élimination des processus zombies sur une machine Linux.

Quels sont les processus Zombie?

Mais avant tout cela, il est important que vous sachiez ce que sont réellement les processus zombies. Ce ne sont que des processus morts et obsolètes qui occupent de l'espace sur la table des processus système. UNE bloc de contrôle de processus ou PCB est une structure de données qui stocke les détails associés aux processus individuels exécutés sur votre système.

La table de processus se compose de l'ID de processus, d'un lien vers le PCB et d'autres informations utiles liées au processus. Les processus Zombie ont leurs propres identifiants de processus et informations de gestion de la mémoire. Étant donné que le système d'exploitation Linux dispose d'un nombre limité d'ID de processus disponibles, les autres processus ne peuvent pas utiliser les PID jusqu'à ce que le processus zombie s'arrête.

Bien qu'un ou deux processus zombies n'entraînent aucune interruption ou problème de performance sur votre ordinateur, un un grand nombre de ces processus peut nuire au flux de travail de votre système en inondant la table de processus et le Ressources.

Quelles sont les causes des processus zombies sous Linux?

Pour comprendre en détail la cause sous-jacente d'un processus zombie, vous devrez apprendre comment les processus démarrent et s'arrêtent sous Linux. Le système d'exploitation Linux surveille tous les processus et démons en cours d'exécution sur un ordinateur. le table de processus est une liste de structures qui contient tous les processus en cours d'exécution sur votre machine.

Chaque entrée de processus dans la table de processus se compose d'un lien vers le bloc de contrôle de processus de ce processus spécifique. Le PCB stocke les détails associés à ce processus particulier. Ces détails comprennent:

  1. État du processus: L'état actuel du processus
  2. Numéro de processus: Un numéro unique utilisé pour identifier le processus
  3. Compteur de programme: Contient des informations relatives à l'instruction suivante
  4. Registres: Liste de tous les registres CPU utilisés par le processus
  5. Ouvrir la liste des fichiers: Fichiers utilisés par le processus
  6. Informations de planification du processeur: Contient des informations associées au temps CPU et aux ressources allouées au processus
  7. Informations sur la gestion de la mémoire: Inclut des détails sur la quantité de mémoire utilisée par le processus
  8. Informations d'E / S: Liste des périphériques d'entrée ou de sortie utilisés par le processus

Linux utilise les états de processus suivants pour décrire tous ses processus.

  • R: Processus en cours
  • S: Processus de sommeil
  • : Processus de sommeil ininterrompu
  • T: Processus terminé
  • Z: Processus Zombie

Chaque fois qu'un processus termine la tâche assignée, son état de processus est défini comme Zombi ou alors Z. Chaque processus a un processus parent qui appelle une famille de fonctions nommée attendre() qui attend le changement d'état d'un processus. Par exemple, si l'état du processus change de En cours à Zombi, les attendre() La méthode sera déclenchée.

le attendre() supprime généralement le bloc de contrôle de processus lié à ce processus zombie, puis supprime l'entrée de ce processus de la table de processus.

Mais parfois, en raison du faible développement d'un programme, le processus parent n'appelle pas le attendre() une fonction. Et par conséquent, le système ne supprime pas le PCB du processus zombie. L'entrée de la table de processus pour ce processus spécifique reste également intacte.

Cela confère au processus zombie une durée de vie infinie. Étant donné que le système ne peut pas tuer le processus, l'entrée de processus n'est jamais supprimée et le PID n'est jamais libéré.

Apprendre encore plus: Façons de tuer les programmes qui ne répondent pas sous Linux

Comment trouver les processus Zombie?

La première étape pour supprimer les processus zombies de votre système consiste à analyser quel processus a le Zombi état du processus. Bien que vous ne puissiez pas tuer ces processus directement car le système les a déjà supprimés de la mémoire, vous pouvez tuer le processus parent qui leur est associé.

Tout d'abord, vous devez vérifier si la table de processus de votre système a un processus zombie. Vous pouvez le faire facilement en utilisant le Haut commander. Ouvrez simplement votre terminal et tapez:

Haut

Vous verrez une sortie similaire à celle-ci. Notez le nombre de processus zombies en haut de la fenêtre du terminal. Si la sortie est égale à zéro, vous n'avez pas à vous inquiéter.

Vous pouvez lister les informations relatives à ces processus zombies par piping la commande ps avec egrep. Egrep est une extension de la commande grep sous Linux qui traite tous les modèles comme une chaîne regex étendue.

En rapport: Le guide du débutant des expressions régulières avec Python

Tapez la commande suivante pour répertorier tous les processus zombies:

ps aux | egrep "Z | défunt"

La commande susmentionnée recherchera les lignes contenant soit Z ou alors défunt dans la sortie générée par la commande ps. La sortie se compose d'une liste des processus zombies en cours d'exécution sur votre système.

Tuer des processus de zombies à l'aide de la commande kill

Maintenant que vous savez quels processus zombies sont actuellement en train de ronger vos ressources système, il est temps de tuer ces processus.

Bien que le moyen le plus simple de tuer les processus zombies soit de redémarrer votre ordinateur, ce n'est parfois pas une option réalisable, surtout si vous administrez un serveur.

Pour tuer les processus zombies sans arrêter votre serveur, notez l'ID de processus de tout processus zombie. Dans la section précédente, nous pouvons voir que le PID du processus zombie était 18614. Ensuite, utilisez ce PID pour trouver l'ID du processus parent.

ps -o ppid = -p 18614

Production:

18613

Vérifiez si l'ID de processus parent existe à l'aide de ps commander.

ps -e | grep 18613

Maintenant que nous avons confirmé l'existence du processus parent, il est temps de le tuer. Passe le -SIGKILL drapeau avec le tuer commande comme suit:

sudo kill -SIGKILL 18613

Une fois que vous avez tué le processus parent, le système supprimera le processus zombie et le supprimera automatiquement de la table de processus.

Gérer efficacement les processus sous Linux

Chaque administrateur système doit donner la priorité aux processus de surveillance s'exécutant sur une machine Linux. Bien que les processus zombies ne soient pas nécessairement nocifs pour votre système, ils peuvent entraîner des problèmes de performances s'ils existent en grand nombre.

Si vous êtes un utilisateur Linux débutant et que vous n'avez aucune idée de la façon dont le système d'exploitation Linux gère les processus, apprendre ce que sont les processus en premier est un bon point de départ.

E-mail
Qu'est-ce qu'un processus sous Linux?

Comprendre les processus et les tâches est un aspect clé pour se familiariser avec Linux. Voici ce que vous devez savoir.

Lire la suite

Rubriques connexes
  • Linux
  • Linux
  • Traitement
A propos de l'auteur
Deepesh Sharma (45 articles publiés)

Deepesh est l'éditeur junior pour Linux chez MUO. Il écrit du contenu informatif sur Internet depuis plus de 3 ans. Pendant son temps libre, il aime écrire, écouter de la musique et jouer de la guitare.

Plus de Deepesh Sharma

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives!

Un pas de plus…!

Veuillez confirmer votre adresse e-mail dans l'e-mail que nous venons de vous envoyer.

.