Les zombies sont des processus MORT. Ils ne peuvent pas être "tuer" (Vous ne pouvez pas tuer les MORT). Tous les processus finissent par mourir et quand ils le deviennent, ils deviennent des zombies. Ils ne consomment presque pas de ressources, ce qui est normal car ils sont morts! La raison des zombies est que le parent du zombie (processus) puisse 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 pour ne pas rester comme des zombies.
Si vous avez des processus zombies, cela signifie que ces parents n'ont pas attendu ces zombies (regardez le PPID affiché par ps -l
). Vous avez trois choix: Corrigez le processus parent (faites-le attendre); tuer le parent; ou vivre avec elle. Rappelez-vous que vivre avec cela n’est pas si difficile car les zombies ne prennent guère plus d’une ligne supplémentaire dans la sortie de ps.
Les zombies peuvent être identifiés dans la sortie de la commande ps Unix par la présence d'un "Z" dans la colonne STAT. Les zombies qui existent depuis plus d'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 s'aggraverait avec des charges plus lourdes.
Pour supprimer les zombies d'un système, le signal SIGCHLD peut être envoyé manuellement au parent à l'aide de la commande kill. Si le processus parent refuse toujours de récupérer le zombie, l'étape suivante consiste à supprimer le processus parent. Lorsqu'un processus perd son parent, init devient son nouveau parent. Init exécute périodiquement l'appel système en attente pour récupérer tous les zombies avec init en tant que parent.
Il existe également des processus orphelins qui sont un processus informatique dont le processus parent est terminé ou s'est terminé.
Un processus peut devenir orphelin lors de l'appel à distance lorsque le processus client se bloque après avoir envoyé une demande au serveur.
Les orphelins gaspillent des ressources de serveur et peuvent potentiellement causer des problèmes à un serveur (il s'agit de la plus grande différence de ressources entre zombies et orphelins (sauf si vous voyez un film zombie orphelin). Cependant, il existe plusieurs solutions au problème de processus orphelin:
L'extermination est la technique la plus couramment utilisée; dans ce cas, le processus orphelin est tué.
La réincarnation est une technique dans laquelle des machines tentent périodiquement de localiser les parents de calculs à distance. à quel point les processus orphelins sont tués.
L'expiration est une technique dans laquelle chaque processus se voit attribuer un certain temps avant d'être exécuté. Si nécessaire, un processus peut "demander" plus de temps avant la fin du temps imparti.
Un processus peut également être orphelin et s'exécuter 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 re-parenting et se produit automatiquement. Même si, techniquement, le processus a pour origine le processus "init", il est toujours appelé 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 suspendu lorsque le système se bloque et réagit lentement à la saisie de l'utilisateur?
Tuer un processus en cours d'exécution sur une machine Ubuntu à distance à partir d'une machine Windows en réseau local