Qu’est-ce que le processus zombie sur Linux
Tout ce qui s’exécute sur un système Linux est un processus, qui se déroule soit au premier plan (visible par l’utilisateur), soit en arrière-plan (processus non apparents comme les services système). Il existe différents états dans lesquels un processus peut se trouver, à savoir l’exécution, le sommeil ininterrompu, le sommeil interrompable, l’arrêt et le zombie. Mais qu’est-ce qu’un processus zombie ?
Dans ce tutoriel, nous allons aborder les processus zombies sous Linux. Nous allons passer en revue leur définition, leur objectif et comment les identifier et s’en débarrasser sur un système Linux.
Dans ce tutoriel, vous allez apprendre :
- Qu’est-ce qu’un processus zombie et pourquoi existe-t-il ?
- Comment identifier les processus zombies
- Comment tuer un processus zombie
Qu’est-ce qu’un processus zombie ?
Comme mentionné ci-dessus, un processus Linux peut être dans plusieurs états différents. Celui qui nous préoccupe est un processus zombie. Un processus zombie est un processus dont l’exécution a été terminée, soit avec élégance, soit avec force. Le processus est mort (d’où son nom) mais existe toujours dans la table de processus. Il n’a tout simplement pas encore été nettoyé, mais il ne fonctionne plus. C’est un processus mort qui n’a pas encore complètement disparu, un peu comme... un zombie !
Un processus zombie est aussi parfois appelé un processus défunt. Un processus entre dans l’état zombie lorsqu’il reçoit un signal SIGCHLD.
Un zombie attend que son processus parent lise sa valeur de sortie via wait() ou waitpid(), puis il sera effacé de la table de processus. Si le processus parent se termine, alors init détruira ses zombies restants.
Identifier et tuer les processus zombies
Il n’y a pas beaucoup de bonnes façons d’identifier facilement les processus zombies. Ce n’est pas quelque chose dont un utilisateur a généralement besoin de se préoccuper, car le système est parfaitement capable de gérer les processus zombies. La seule exception pourrait être un programme bogué qui génère continuellement des processus enfants et ne les efface jamais correctement.
Néanmoins, si vous êtes déterminé à rechercher des processus zombies, nous pouvons utiliser la commande ps. Utilisez les options suivantes pour filtrer la colonne PID et état. Nous allons ensuite passer à awk afin de n’afficher que les processus avec un statut de 'Z' (zombie).
ps axo pid=,stat= | awk '$2~/^Z/ { print }'
Encore une fois, il n’est généralement pas nécessaire d’identifier ces processus, et encore moins de les tuer. Cependant, une simple commande kill fera l’affaire. Il suffit de fournir le PID récupéré précédemment en argument de la commande.
kill 1234
Si cela ne fonctionne pas, vous pouvez envoyer un signal SIGKILL en utilisant l’option -9 avec votre commande :
kill -9 1234
Réflexions finales
Dans ce tutoriel, nous avons appris ce qu’est un processus zombie sur un système Linux. Nous avons également vu comment identifier les processus zombies sur notre propre système et les détruire manuellement. L’état zombie n’est que l’un des cinq états possibles dans lesquels un processus peut se trouver, tous avec leur propre objectif important.
