GNU/Linux >> Tutoriels Linux >  >> Linux

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

Si vous êtes un utilisateur régulier de Linux, vous devez avoir rencontré le terme 'Zombie Processes '. Alors, quels sont les processus zombies ? Comment sont-ils créés ? Sont-ils nocifs pour le système ? Comment puis-je tuer ces processus ? Continuez à lire pour les réponses à toutes ces questions.

Que sont les processus zombies ?

Nous savons donc tous comment fonctionnent les processus. Nous lançons un programme, commençons notre tâche et une fois notre tâche terminée, nous terminons ce processus. Une fois le processus terminé, il doit être supprimé de la table des processus.

Vous pouvez voir les processus en cours dans le 'System-Monitor'.

Remplacez le pid par l'id du processus parent afin que le processus parent supprime tous les processus enfants morts et terminés. Imaginez-le comme ceci :"Vous trouvez un cadavre au milieu de la route, vous appelez la famille du cadavre et ils éloignent ce cadavre de la route." Mais beaucoup de programmes ne sont pas suffisamment bien programmés pour supprimer ces enfants zombies, car s'ils l'étaient, vous n'auriez pas ces zombies en premier lieu. Ainsi, la seule chose garantie pour supprimer les enfants zombies est de tuer le parent.

Cependant, certains de ces processus restent parfois dans la table des processus même après leur exécution.

Cependant, certains de ces processus restent parfois dans la table des processus même après leur exécution.

Ainsi, ces processus qui ont terminé leur vie d'exécution mais qui existent toujours dans la table des processus sont appelés «processus zombies».

Et comment sont-ils créés exactement ?

Chaque fois que nous exécutons un programme, il crée un processus parent et de nombreux processus enfants. Tous ces processus enfants utilisent des ressources telles que la mémoire et le processeur qui leur sont allouées par le noyau.

Une fois que ces processus enfants ont fini de s'exécuter, ils envoient un appel Exit et meurent. Cet appel Exit doit être lu par le processus parent qui appelle ensuite la commande wait pour lire le exit_status du processus enfant afin que le processus enfant puisse être supprimé de la table des processus. Si le parent lit correctement l'appel de sortie envoyé par le processus enfant, le processus est supprimé de la table des processus.

Mais, si le parent ne parvient pas à lire l'appel de sortie du processus enfant, le processus enfant qui a déjà terminé son exécution et est maintenant mort ne sera pas supprimé de la table des processus.

Les processus zombies sont-ils dangereux pour le système ?

Non. Étant donné que le processus zombie ne fait aucun travail, n'utilise aucune ressource ou n'affecte aucun autre processus, il n'y a aucun mal à avoir un processus zombie. Mais comme exit_status et d'autres informations de processus de la table de processus sont stockées dans la RAM, avoir trop de processus Zombie peut parfois être un problème. Imaginez-le comme ceci :

"Vous êtes propriétaire d'une entreprise de construction. Vous payez un salaire journalier à tous vos travailleurs en fonction de leur façon de travailler. Un ouvrier vient tous les jours sur le chantier, reste assis là, vous n'avez pas à le payer, il ne fait aucun travail. Il vient juste tous les jours et s'assoit, c'est tout !"

Un tel travailleur est un exemple vivant d'un processus zombie. Mais, si vous avez beaucoup de travailleurs zombies, votre chantier de construction sera encombré et cela pourrait devenir difficile pour les personnes qui travaillent réellement.

Alors, comment trouver les processus zombie ?

Lancez un terminal et tapez la commande suivante – ps aux | grep Z Vous obtiendrez maintenant les détails de tous les processus zombies dans la table des processus.

Comment tuer les processus Zombie ?

Normalement, nous tuons les processus avec la commande SIGKILL mais les processus zombies sont déjà morts. Vous ne pouvez pas tuer quelque chose qui est déjà mort. Donc, ce que vous faites, c'est que vous tapez cette commande - kill -s SIGCHLD pid Remplacez le pid par l'identifiant du processus parent afin que le processus parent supprime tous les processus enfants qui sont morts et terminés. Imaginez-le comme ceci :

"Vous trouvez un cadavre au milieu de la route, vous appelez la famille du cadavre et ils éloignent ce corps de la route."

Mais beaucoup de programmes ne sont pas suffisamment bien programmés pour supprimer ces enfants zombies, car s'ils l'étaient, vous n'auriez pas ces zombies en premier lieu. Ainsi, la seule chose garantie pour supprimer les enfants zombies est de tuer le parent.


Linux
  1. Comment tuer un processus zombie sous Linux

  2. Comment tuer un processus dont le parent est Init ?

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

  4. Linux :trouver et tuer les processus zombies

  5. Comment tuer le processus zombie

Comment trouver et tuer les processus zombies dans CentOS 8

Comment localiser et tuer un processus avec un terminal Linux

Comment tuer les processus zombies dans Ubuntu 20.04 LTS

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

Comment tuer les processus zombies dans Ubuntu

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