Qu’est-ce qu’un processus zombie :
Il s’agit d’un processus qui s’est terminé, mais qui n’est pas entièrement retiré immédiatement de la mémoire, car son descripteur de processus reste en mémoire.
Quel doit être le comportement normal d’un processus :
Lorsqu’un processus se termine, son statut devient
EXIT_ZOMBIE
et le parent du processus est averti que son processus enfant est mort avec le
SIGCHLD
signal.
Le processus parent est alors censé exécuter la commande
wait()
Pour que l’appel système lise l’état de sortie du processus inactif et d’autres informations. Après
wait()
est appelé, le processus zombie est supprimé de la mémoire. Cela se produit rapidement, de sorte que vous ne voyez pas les processus zombies s’accumuler sur votre système. Mais dans les cas où nous voyons plusieurs processus zombies s’accumuler, il s’agit d’une situation où le code du programme n’est pas efficace.
Comment trouver un processus zombie :
Exécution de la commande
top
Exécution de la commande
ps -ef | grep defunct
Comment mettre fin aux processus zombies qui s’accumulent :
La plupart du temps, les processus zombies ont le même ID de processus parent.
Il existe deux méthodes pour supprimer le processus :
- Envoyer le
SIGCHLD
signal au processus parent.
Ce signal indique au processus parent d’exécuter la commande wait()
Appel système et nettoyage de ses enfants zombies :
kill -s SIGCHLD <PPID>
Exemple :
kill -s SIGCHLD 2201
- Tuer le processus parent zombie
kill -9 <PPID>
Exemple :
kill -9 2201