Terminal de contrôle
100%

Processus · Leçon 2

Terminal de contrôle

Découvrez comment les terminaux de contrôle relient les sessions aux entrées interactives, aux signaux et au contrôle des tâches du shell.

Une session de connexion interactive peut posséder un terminal de contrôle : un périphérique terminal associé à la session et employé par le noyau pour les signaux générés par le terminal et le contrôle des tâches. Le champ TTY des listes de processus aide à identifier cette association.

Terminaux et pseudo-terminaux

Le nom TTY vient des anciens télétypes. Sous Linux moderne, les interfaces de terminal sont des abstractions de périphériques et pas nécessairement du matériel physique.

Une console virtuelle du système peut porter un nom tel que tty1. Les raccourcis du bureau qui permettent de changer de console varient selon la distribution et ne doivent pas être supposés. Un émulateur de terminal, une connexion distante ou un multiplexeur emploie couramment une paire de pseudo-terminaux, dont le côté interactif porte un nom tel que pts/3.

Affichez le terminal relié à l’entrée standard de la commande actuelle avec :

$ tty
/dev/pts/3

Ce résultat est lié à la notion plus large de terminal de contrôle, mais ne lui est pas identique. Un processus peut rediriger son entrée ou sa sortie standard tout en restant dans une session qui possède un terminal de contrôle.

Qu’identifie généralement un nom tel que pts/3 ?

Sessions, groupes de processus et contrôle des tâches

Un terminal de contrôle appartient à une session, et pas seulement à la commande qui a ouvert une fenêtre. Dans cette session, le terminal suit un groupe de processus au premier plan. Le shell place un pipeline au premier plan dans ce groupe afin qu’il puisse lire l’entrée et recevoir les signaux produits par le terminal.

Par exemple, l’appui sur Ctrl-C demande normalement au pilote du terminal d’envoyer SIGINT au groupe de processus au premier plan. Un groupe en arrière-plan qui essaie de lire le terminal peut recevoir SIGTTIN. Ces règles permettent au shell de coordonner les tâches au premier plan et en arrière-plan.

À quels processus un terminal adresse-t-il normalement le signal produit par Ctrl-C ?

Lire la colonne `TTY`

Demandez explicitement certains champs des processus lorsque vous souhaitez une vue stable :

$ ps -o pid,tty,stat,cmd

Un nom de terminal tel que pts/3 identifie le terminal de contrôle enregistré pour ce processus. Un point d’interrogation (?) signifie normalement que le processus ne possède aucun terminal de contrôle.

De nombreux processus de services n’en possèdent pas, car un gestionnaire de services les démarre indépendamment d’une session de connexion interactive. Cependant, l’absence de TTY ne prouve pas à elle seule qu’un processus est un démon, et une tâche de shell en arrière-plan peut toujours posséder un terminal de contrôle.

Que signifie normalement ? dans la colonne TTY de ps ?

Fermeture du terminal et raccrochage

Lorsqu’une connexion de terminal disparaît, le noyau ou le logiciel du terminal ou de la session peut envoyer SIGHUP aux processus associés. Un processus peut se terminer, intercepter le signal, l’ignorer ou avoir déjà été configuré pour lui survivre. Des fonctions du shell telles que disown, des utilitaires tels que nohup, les multiplexeurs et les gestionnaires de services influencent tous le cycle de vie.

La fermeture d’un terminal ne garantit donc pas que chaque commande lancée depuis celui-ci se termine. Examinez la session du processus, sa gestion des signaux, ses redirections et son superviseur lorsque sa persistance importe.

Pourquoi est-il inexact d’affirmer que la fermeture d’un terminal termine toujours chaque processus lancé depuis celui-ci ?

Leçon terminée

Vous avez terminé Terminal de contrôle

Vous savez maintenant relier un terminal de contrôle à la gestion interactive des processus.

  • Distinguer les terminaux virtuels des pseudo-terminaux.

  • Relier les signaux du terminal au groupe de processus au premier plan.

  • Interpréter les noms de terminaux et ? dans la sortie de ps.

  • Considérer la fermeture du terminal comme une signalisation, et non une garantie de terminaison du processus.

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