Question Qu'est-ce qu'un processus zombie?


Avec des commandes comme top et le gui basé System Monitor Je peux voir que j'ai actuellement plusieurs processus de zombies.

Qu'est-ce qu'un processus zombie?

Affectent-ils les performances du système ou de l'application à laquelle ils sont soumis? Utilisent-ils trop de mémoire ou de mémoire du tout?


127
2018-06-13 22:27


origine


Ce sont des processus qui veulent manger votre processeur;) - Luis Alvarado♦
pour le déjeuner... :) - RolandiXor♦
Ces processus sont morts mais pas enterrés. - Prateek Joshi
Mange mon CPU?! C'est terrifiant! - Håvard Geithus


Réponses:


Les zombies sont des processus mortels. Ils ne peuvent pas être «tuer» (vous ne pouvez pas tuer le mort). Tous les processus finissent par mourir et, lorsqu'ils le font, ils deviennent des zombies. Ils ne consomment presque pas de ressources, ce qui est à prévoir car ils sont morts! La raison des zombies est que le parent (processus) du zombie peut récupérer le statut de sortie du zombie et les statistiques d'utilisation des ressources. Le parent signale au système d'exploitation qu'il n'a plus besoin du zombie en utilisant l'un des appels système wait ().

Lorsqu'un processus meurt, ses processus enfants deviennent tous des enfants du processus numéro 1, qui est le processus init. Init attend toujours que les enfants meurent, de sorte qu'ils ne restent pas comme des zombies.

Si vous avez des processus de zombies, cela signifie que ces zombies n’ont pas été attendus par leur parent (regardez PPID affiché par ps -l). Vous avez trois choix: Fixer le processus parent (le faire attendre); tuer le parent; ou vivre avec elle. Rappelez-vous que vivre avec elle n'est pas si difficile, car les zombies ne prennent qu'une ligne supplémentaire dans la sortie de ps.

Les zombies peuvent être identifiés dans la sortie de la commande Unix ps par la présence d'un "Z" dans la colonne STAT. Les zombies qui existent depuis plus qu'une courte période indiquent généralement un bogue dans le programme parent. Comme avec d'autres fuites, la présence de quelques zombies n'est pas inquiétante en soi, mais peut indiquer un problème qui deviendrait grave sous des charges plus lourdes.

Pour supprimer les zombies d'un système, le signal SIGCHLD peut être envoyé au parent manuellement, à l'aide de la commande kill. Si le processus parent refuse toujours de récupérer le zombie, l'étape suivante consisterait à supprimer le processus parent. Lorsqu'un processus perd son parent, init devient son nouveau parent. Init exécute périodiquement l'appel du système d'attente pour récupérer les zombies avec init en tant que parent.

Il y a aussi processus orphelins qui sont un processus informatique dont le processus parent est terminé ou terminé.

Un processus peut devenir orphelin lors de l'appel à distance lorsque le processus client se bloque après une demande du serveur.

Les orphelins gaspillent les ressources du serveur et peuvent potentiellement causer des problèmes au serveur (il s’agit de la plus grande différence de ressources entre les zombies et les orphelins (sauf si vous voyez un film de zombies orphelin).)

  1. L'extermination est la technique la plus couramment utilisée; dans ce cas, le processus orphelin est tué.

  2. La réincarnation est une technique dans laquelle les machines tentent périodiquement de localiser les parents de tous les calculs à distance. à quel point les processus orphelins sont tués.

  3. L'expiration est une technique où chaque processus se voit accorder un certain temps pour se terminer avant d'être tué. Si nécessaire, un processus peut "demander" plus de temps pour terminer avant l'expiration du délai imparti.

Un processus peut également être orphelin sur le même ordinateur que son processus parent. Dans un système d'exploitation de type UNIX, tout processus orphelin sera immédiatement adopté par le processus système spécial "init". Cette opération s'appelle le re-parenting et se produit automatiquement. Bien que techniquement le processus ait le processus "init" comme parent, il est toujours appelé un processus orphelin car le processus qui l'a créé à l'origine n'existe plus.

Plus d'informations:

http://wiki.answers.com/Q/What_is_Zombie_Process_and_Orphan_Process#ixzz1PCN9vojU

http://www.linuxsa.org.au/tips/zombies.html

http://www.brighthub.com/computing/linux/articles/79186.aspx

Comment identifier et supprimer le processus de suspension lorsque le système se bloque et réagit lentement à la saisie de l'utilisateur?

Tuer un processus en cours d'exécution dans une machine Ubuntu à distance depuis une machine Windows qui est en réseau local


151
2018-06-13 22:39



Ekhm! Vous POUVEZ tuer les morts! Il suffit de viser la tête. Ou nous ont-ils menti tout le temps? - Marcin Kaminski
init appels wait sur tous ses processus enfants que ce soit, zombie, orphelin (adopté) et biologique (auto-engendré)? - Bleeding Fingers
acc. à la guerre mondiale utiliser camouflage: P - عثمان غني
Merci de donner une médaille à @MarcinKaminski! - Andrea Romagnoli


Processus Zombie (montrent aussi comme <defunct>), ne sont pas du tout des processus réels. Ce ne sont que des entrées dans la table de processus du noyau. C'est la seule ressource qu'ils consomment. Ils ne consomment aucun processeur ou RAM. Le seul danger d’avoir des zombies est de manquer de place dans la table des processus (vous pouvez utiliser cat /proc/sys/kernel/threads-max pour voir combien d'entrées sont autorisées sur votre système).

Ils n'apparaissent que lorsque leur processus parent (processus qui fork()'ed eux) est en vie, mais n'a pas encore appelé wait() fonction du système. Une fois que le parent meurt, les zombies sont wait()'ed pour par init et disparaissent.


20
2018-06-14 09:36



le top `capture d'écran dans cette question semble te contredire? Là, le zombie semble utiliser 100% de 1 CPU, mais pas de mémoire. - Torben Gundtofte-Bruun


Lorsqu'un child process se termine, sa mort est communiquée à son parent afin que le parent puisse prendre des mesures appropriées.

UNE process C'est attendre que son parent accepte son code retour est appelé un processus zombie.

Ils ont completed their execution mais a toujours un entry dans le process table.


6
2017-10-14 16:11