Fin des processus
100%

Processus · Leçon 5

Fin des processus

Découvrez comment l’état de sortie, l’attente, les zombies et le changement de parent achèvent le cycle de vie des processus Linux.

Un processus peut se terminer en revenant de sa fonction principale, en appelant une interface de sortie ou en étant terminé par un signal. Le noyau libère la plupart de ses ressources, mais la comptabilisation entre parent et enfant se poursuit jusqu’à ce que le parent recueille les informations de fin.

État de sortie

Un programme qui se termine normalement fournit un état entier. Par convention, l’état 0 signifie la réussite et une valeur non nulle signale une forme d’échec ou un autre résultat. La signification exacte des valeurs non nulles appartient à l’interface du programme.

Dans un shell, examinez l’état du pipeline au premier plan le plus récent avec :

$ command
$ printf '%s\n' "$?"

Les shells exposent une plage d’états encodés limitée et représentent aussi la terminaison par un signal ; cette valeur n’est donc pas un dossier de diagnostic complet. Les programmes doivent documenter leurs propres codes de sortie.

Selon la convention Unix, quel état de sortie normal indique la réussite ?

Attendre et récupérer

Le noyau enregistre la manière dont un enfant s’est terminé et avertit son parent. Celui-ci emploie un membre de la famille d’appels système wait() pour récupérer ces informations. La collecte de cet enregistrement s’appelle la récupération.

L’attente peut également coordonner l’exécution : un shell attend une commande au premier plan avant d’afficher une nouvelle invite, mais peut différer l’attente d’une tâche en arrière-plan. Un parent de longue durée bien conçu doit récupérer ses enfants sans bloquer le travail sans rapport.

Qu’est-ce qu’une opération d’attente réussie permet au parent de récupérer ?

Processus zombies

Après la fin d’un enfant mais avant la récupération de son enregistrement, il apparaît comme un zombie, souvent avec l’état Z dans ps. Il ne s’exécute plus et ne conserve aucun espace d’adressage ordinaire, mais une entrée minimale de la table des processus et des informations comptables subsistent.

L’envoi d’un signal à un zombie ne peut pas le faire se terminer une seconde fois. Pour corriger une accumulation persistante, diagnostiquez le parent qui n’attend pas, redémarrez-le ou corrigez-le au moyen d’une procédure opérationnelle adaptée, ou permettez le rattachement à un processus qui récupérera le zombie. Un grand nombre de zombies peut épuiser les PID ou la capacité de la table des processus.

Quelle description correspond à un processus zombie ?

Orphelins et changement de parent

Si un parent se termine tandis que son enfant continue, le noyau rattache cet enfant à un sous-récupérateur admissible ou au processus init de l’espace de noms de PID concerné. L’enfant peut être en cours d’exécution, en sommeil, arrêté ou devenir ensuite un zombie ; « orphelin » décrit la perte de la relation avec le parent d’origine plutôt qu’un état d’exécution.

Le processus adoptant devient responsable de la collecte de l’état de fin. Les gestionnaires de services et les environnements de conteneurs modernes rendent important de ne pas supposer que le nouveau parent est toujours le PID 1 de l’hôte.

Que se passe-t-il lorsqu’un processus survit à son parent d’origine ?

Leçon terminée

Vous avez terminé Fin des processus

Vous savez maintenant distinguer la fin de l’exécution du nettoyage côté parent.

  • Interpréter zéro comme une réussite conventionnelle et les états non nuls selon la documentation du programme.

  • Employer l’attente pour recueillir les informations de fin d’un enfant.

  • Reconnaître un zombie comme terminé mais non récupéré.

  • Reconnaître un orphelin comme un enfant rattaché à un nouveau parent après la fin de son parent d’origine.

Conservez votre progression

Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.

Créer un compte gratuit
Leçon Suivante
Retour à Processus