GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver et tuer le processus Zombie sous Linux

Brief :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 d'en savoir plus sur le processus Zombie, permettez-moi de rappeler ce qu'est un processus sous Linux.

En quelques mots, un processus est une instance en cours d'exécution d'un programme en performance. Il peut s'agir d'un premier plan (processus interactif) ou d'un 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.

Vous ne me croyez pas ? Utilisez le pstree commande dans le terminal pour consulter l'arborescence des processus afin de 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 conscient 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 version 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 sembler.

Le problème peut survenir si votre système dispose d'une RAM limitée ou s'il y a trop de processus zombies consommant de la RAM. De plus, la plupart des processus Linux peuvent avoir un PID maximum défini sur 32768. S'il n'y a pas d'ID disponibles pour d'autres tâches productives, votre système peut planter.

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 zombie ?

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 du travail
  • t =arrêté par le débogueur lors de la trace
  • Z =zombie

Mais où pouvez-vous voir les processus et leur statut respectif ? Un moyen simple consiste à utiliser le terminal et la commande top.

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é ?

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 réalisable 😉

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.

Alors, d'abord, listons les processus zombies pour connaître leur ID. Cela peut être réalisé en utilisant la commande ps comme celle-ci 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, donc finalement tuez le processus en tapant la ligne de commande avec son ID de processus respectif obtenu auparavant.

kill -9 <parent_process_ID>

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.

Bravo! Vous savez maintenant comment éliminer les processus zombies.

Avec les contributions d'Abhishek Prakash.

Article d'origine


Linux
  1. Comment tuer un processus zombie sous Linux

  2. Que sont les processus zombies et comment trouver et tuer les processus zombies ?

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

  4. Comment puis-je trouver et tuer un processus dans Ubuntu

  5. Linux :trouver et tuer les processus zombies

Comment trouver et tuer les processus zombies dans CentOS 8

Comment trouver l'ID de processus d'un programme et le tuer [Astuce rapide]

Comment tuer un processus sous Linux

Comment trouver le PID et le PPID d'un processus sous Linux

Comment tuer les processus zombies dans Ubuntu

Comment tuer les processus sous Linux en utilisant kill, killall et pkill