Dois-je tuer le processus zombie dans mon système?

Puisque je suis novice dans les systèmes Linux / Unix et je viens de lire sur les processus zombie , j'ai une question. J'ai 10 d'entre eux maintenant. Dois-je les tuer et, si oui, pourquoi? Sont-ils une charge sur mon système?

592 processes: 581 sleeping, 1 running, 10 zombie, 0 stopped 

Vous ne pouvez pas tuer un zombie, il est déjà mort.

Les ressources de ce processus sont gratuites et disponibles pour d'autres processus. Ce qui reste est une entrée dans la table des processus. Cela n'a pas d'influence sur la performance, ne vous inquiétez pas.

Quels sont ces processus de zombie qui apparaissent dans ps? Je les tue mais ils ne s'en vont pas!

Les zombies sont des processus morts. Vous ne pouvez pas tuer les morts. Tous les processus finissent par mourir, et quand 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 donc que le parent (processus) de zombie peut récupérer l'état de sortie du zombie et les statistiques d'utilisation des ressources. Le parent signale le système d'exploitation qu'il n'a plus besoin du zombie en utilisant l'un des appels système wait ().

Lorsqu'un processus se produit, son enfant traite tous les enfants du processus numéro 1, qui est le processus d'initialisation. Init attend toujours que les enfants meurent, de sorte qu'ils ne restent pas comme des zombies.

Si vous avez des processus zombie, cela signifie que ces zombies n'ont pas été attendus par leur parent (regardez PPID affiché par ps -l). Vous avez trois choix: réparez le processus parent (faites-le attendre); Tuer le parent; Ou vivre avec lui. Rappelez-vous que vivre avec elle n'est pas si difficile parce que les zombies prennent peu plus d'une ligne supplémentaire dans la sortie de ps.

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

Et dans le cas où vous êtes en train de subir un meurtre, ce fil superutilisateur pourrait vous intéresser: comment trouvez-vous le processus parental d'un processus zombie?

Vous n'avez pas besoin de les tuer.

Pour construire une compréhension de base:

Chaque processus est l'enfant d'un processus parent (à l'exception du processus d'initialisation, mais nous n'avons pas à nous en soucier).

Lorsqu'un processus enfant finit d'être exécuté, il peut encore contenir des données auxquelles le processus parent souhaite accéder, généralement un code de sortie qui décrit le résultat du processus enfant (A-t-il réussi? Est-ce une erreur? Quel était le code d'erreur?).

Un processus enfant fini se déroule dans la table des processus en tant que processus zombie jusqu'à ce que le processus parent «récolte» ou attend le processus enfant, ce qui est simplement le processus parent indiquant au système d'exploitation qu'il n'a plus besoin de ce processus enfant; Il a lu toutes les valeurs de retour qu'il veut et est terminé avec elle. À ce stade, le système va nettoyer l'entrée dans la table des processus.

Ce processus n'a pas besoin d'être tué.

Juste au cas où vous voulez le tuer de toute façon (pour quelque raison que ce soit), assurez-vous de tirer sur la tête, voici une commande utile:

 kill -HUP `ps -A -ostat,ppid | grep -e '^[Zz]' | awk '{print $2}'` 

À partir de https://www.erianna.com/kill-a-linux-zombie-process