Photographie
unix
[UNIX] Zombie killer !
Mar 8th
[lang_fr]Derrière ce titre de film d’horreur de série B se cache une petite commande Solaris fort utile. Celle qui permet de se débarrasser des processus zombies.
Avant de vous livrer la commande en question, intéressons nous à la notion de processus zombie.
L’état Zombie d’un processus unix est un état de transition normal de la vie, et plutôt de la mort, d’un processus. En effet, une fois son exécution terminée, par un exit() par exemple, un processus passe à l’état zombie – c’est à dire mort, mais pas encore enterré
) – et envoie un signal à son parent pour le notifier de sa propre fin. Il s’agit du signal SIGCHLD (“sig child”). Si celui ci est bien codé, il consomme le signal en utilisant un des appels de type wait ou waitpid ce qui a pour effet de supprimer définitivement le zombie.
Avoir des zombies, est-ce que c’est grave docteur ? Pas vraiment, tant qu’ils ne s’accumulent pas. Ils ne consomment en effet plus de ressource, (mémoire ou CPU) puisqu’ils ont été libérés. La seule chose qu’ils consomment ce sont des entrées dans les tables de processus, ce qui peut à la longue devenir un peu gênant, voire embêtant lorsqu’on atteint le nombre maximal de processus sur un système, mais cela reste rare.
Bon d’accord, mais c’est moche dans un ps, alors comment faire pour s’en débarrasser ?
More >
English