"Il y a 1 processus zombie"

33

Ce message apparaît lorsque je me connecte à ma machine ...

There is 1 zombie process.
  • Qu'est-ce que ça me dit?
  • Est-ce quelque chose qui devrait m'inquiéter?
  • Si oui, que dois-je faire et comment?
John Mee
la source
20
Avez-vous un fusil à canon double à proximité?
EEAA

Réponses:

28

Aucune raison de s'inquiéter :

Zombi

Sur les systèmes d'exploitation Unix, un processus zombie ou un processus obsolète est un processus dont l'exécution est terminée mais qui possède toujours une entrée dans la table des processus, ce qui permet au processus qui l'a démarré de lire son statut de sortie. Dans la métaphore colorée du terme, le processus de l'enfant est mort mais n'a pas encore été récolté.

Lorsqu'un processus se termine, toute la mémoire et les ressources qui lui sont associées sont libérées afin qu'elles puissent être utilisées par d'autres processus. Cependant, l'entrée du processus dans la table de processus reste. Le parent reçoit un signal SIGCHLD indiquant qu'un enfant est décédé; le gestionnaire de ce signal exécute généralement l'appel système wait, qui lit l'état de sortie et supprime le zombie. L'ID de processus du zombie et l'entrée dans la table de processus peuvent ensuite être réutilisés. Cependant, si un parent ignore le SIGCHLD, le zombie sera laissé dans la table des processus. Dans certaines situations, cela peut être souhaitable. Par exemple, si le parent crée un autre processus enfant, il s'assure que le même ID de processus ne lui sera pas attribué.

Source: http://wiki.answers.com/Q/What_is_Zombie_Process_and_Orphan_Process

Marc-André R.
la source
Merci Marc bonne description; maintenant, comment pourrais-je le trouver, déterminer s'il faut le conserver, et sinon, le retirer (et le message).
John Mee
Habituellement, ils s'en iront d'eux-mêmes. Si cela vous énerve vraiment, vous pouvez redémarrer ou trouver le PID du processus parent et le tuer, mais cela dépend de ce qui laisse zombie derrière, ce qui pourrait poser problème pour tuer ce processus particulier.
Marc-André R.
2
N'oubliez pas d'accepter ma réponse si c'est la vraie réponse à votre question;) merci!
Marc-André R.
10
Désolé, vous n'avez répondu qu'à la première partie de sa question. On ne sait toujours pas si l’on devrait s’inquiéter à ce sujet et quoi faire.
0

Comme expliqué dans la réponse acceptée, vous avez un processus qui a terminé son exécution mais est toujours en cours de traitement: https://serverfault.com/a/390216/48449

Cela ne devrait pas causer de préjudice s'il ne s'agit que d'un processus, mais ne devrait toujours pas se produire. S'il y en a trop et que vous ne redémarrez pas le processus parent responsable qui les génère, vous pouvez atteindre le nombre maximal de processus autorisés et poser des problèmes graves.

Pour savoir si l'inquiétude est appropriée et à quel autre processus appartient le zombie, cela fonctionne pour moi:

ps -elf --forest | grep -C5 '<[d]efunct>'

Si nécessaire, augmentez le nombre de lignes de contexte pour en savoir plus sur le processus parent, et corrigez-le idéalement pour qu'il "récupère" ses sous-processus terminés.

exic
la source