Maison  >  Article  >  Opération et maintenance  >  Que signifie le processus zombie Linux ?

Que signifie le processus zombie Linux ?

WBOY
WBOYoriginal
2022-07-15 10:53:311752parcourir

Le processus zombie Linux est un processus qui a été terminé mais son processus parent n'a pas traité les conséquences pour obtenir des informations sur le processus terminé ; un processus zombie est lorsque le processus enfant se termine avant le processus parent, et le processus parent ne le fait pas. recyclez le processus enfant, libérez-le. Les ressources occupées par le processus enfant à ce moment-là, le processus enfant deviendra un processus zombie.

Que signifie le processus zombie Linux ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

Que signifie le processus zombie Linux ?

Un processus zombie fait référence à un processus qui a été terminé, mais son processus parent n'a pas traité les conséquences pour obtenir des informations sur le processus terminé

Un processus zombie est le processus enfant se termine avant le processus parent. Le processus parent ne recycle pas le processus enfant et ne libère pas les ressources occupées par le processus enfant. À ce stade, le processus enfant deviendra un processus zombie. Si le processus parent se termine en premier, le processus enfant sera repris par init. Une fois le processus enfant terminé, init recyclera les ressources associées qu'il occupe. Nous savons tous comment fonctionnent les processus. Nous démarrons un programme, démarrons notre tâche, puis lorsque la tâche est terminée, nous arrêtons le processus. Lorsqu'un processus s'arrête, il est supprimé de la table des processus.

Vous pouvez visualiser le processus en cours via System-Monitor.

Dans la terminologie du système UNIX, un processus qui s'est terminé, mais dont le parent ne l'a pas encore attendu, est appelé un zombie, il deviendra alors un processus zombie. Cependant, si le processus parent du processus s'est terminé en premier, le processus ne deviendra pas un processus zombie, car lorsque chaque processus se termine, le système analysera tous les processus en cours d'exécution dans le système actuel pour voir si un processus vient d'être terminé. Le processus enfant du processus terminé est ainsi, Init le reprendra et deviendra son processus parent

Développez les connaissances


Comment vérifier le processus zombie

Utilisez la commande ps, vous pouvez voir qu'il y a un processus parent Le processus avec l'ID de processus 1 est un processus orphelin ; le processus avec le statut s(state) Z est un processus zombie.

Remarque : Un processus orphelin est un processus qui n'a pas été terminé mais qui s'est arrêté (équivalent à une suspension de premier plan), mais son processus parent a été terminé et est adopté par init tandis qu'un processus zombie est un processus terminé dont le processus parent ; Pas nécessairement terminé.

Comment effacer le processus zombie

Réécrivez le processus parent et récupérez son cadavre après la mort du processus enfant. La méthode spécifique consiste à reprendre le signal SIGCHLD. Après la mort du processus enfant, le signal SIGCHLD est envoyé au processus parent. Une fois que le processus parent a reçu ce signal, il exécute la fonction waitpid() pour récupérer le cadavre du processus enfant. Ceci est basé sur le principe que même si le processus parent n'appelle pas wait, le noyau lui enverra un message SIGCHLD, bien que le traitement par défaut soit de l'ignorer. Si vous souhaitez répondre à ce message, vous pouvez définir une fonction de traitement. .

Tuez le processus parent. Après la mort du processus parent, le processus zombie devient un « processus orphelin » et est adopté par le processus n°1, init sera toujours responsable du nettoyage du processus zombie. Après l'arrêt ou le redémarrage, tous les processus zombies disparaîtront. .

Par exemple, si le PID 5878 est un processus zombie et que son processus parent est le PID 4809, alors pour tuer le processus zombie (5878), vous pouvez tuer le processus parent (4809) :

$ sudo kill -9 4809  #4809 is the parent, not the zombie

Soyez très prudent lorsque vous tuez le parent process , si le processus parent d'un processus est PID 1, et que vous le tuez, le système redémarrera directement !

Apprentissage recommandé :

Tutoriel vidéo Linux

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn