Qu’est-ce qu’un TTY sous Linux? (et comment utiliser la commande tty)



La commande tty, que fait-elle exactement ? Elle affiche le nom du terminal que vous utilisez. L’acronyme TTY signifie « téléscripteur ». Mais quelle est l’histoire cachée derrière ce nom ? Cela demande quelques explications supplémentaires.

Les téléimprimeurs du 19ème siècle

Dans les années 1830 et 1840, des appareils nommés téléimprimeurs ont vu le jour. Ces machines permettaient d’envoyer des messages tapés, « sur le fil », vers des endroits éloignés. L’expéditeur utilisait un clavier pour saisir le texte. À la réception, le message était imprimé sur papier. Ces appareils constituaient une évolution majeure par rapport à la télégraphie, qui jusque-là, reposait sur le code Morse et autres codes similaires.

Les messages étaient encodés et transmis, puis reçus, décodés et imprimés. Diverses techniques étaient utilisées pour coder et décoder ces messages. L’une des plus célèbres et des plus largement adoptées fut celle brevetée en 1874 par Émile Baudot, dont le nom a été donné au baud (unité de vitesse de transmission). Son système de codage des caractères a précédé l’ASCII de 89 ans.

Le codage de Baudot est devenu une sorte de norme pour les téléimprimeurs, et il a été adopté par la plupart des fabricants. Le design original de Baudot ne comportait que cinq touches, similaires à des touches de piano. L’opérateur devait apprendre une combinaison de touches particulière pour chaque lettre. Finalement, le système de codage Baudot fut associé à une disposition de clavier plus traditionnelle.

Pour marquer cette avancée, ces machines furent appelées téléscripteurs. Ce terme fut ensuite abrégé en télétypes, puis en TTY. C’est donc ainsi que nous avons obtenu l’acronyme TTY, mais quel est le lien entre la télégraphie et l’informatique ?

L’ASCII et le télex

L’arrivée de l’ASCII en 1963 a marqué un tournant, car cette norme a été adoptée par les fabricants de téléscripteurs. Malgré l’invention et la large diffusion du téléphone, les télétypes restaient largement utilisés.

Le télex était un réseau mondial de télétypes permettant d’envoyer des messages écrits à travers le monde. Ils ont constitué le principal moyen de communication écrite après la Seconde Guerre mondiale jusqu’à l’essor du télécopieur dans les années 1980.

Dans le même temps, les ordinateurs évoluaient rapidement. Ils devenaient capables d’interagir avec les utilisateurs en temps réel et de gérer plusieurs utilisateurs simultanément. L’ancienne méthode du traitement par lots ne suffisait plus. Les utilisateurs ne souhaitaient plus attendre 24 heures, voire plus, pour obtenir leurs résultats. L’époque des piles de cartes perforées et de l’attente des résultats du lendemain était révolue.

Les gens avaient besoin d’un dispositif leur permettant de saisir des instructions et de recevoir des résultats instantanément. Ils recherchaient l’efficacité.

Le télétype réhabilité

Le télétype était le candidat idéal pour servir de dispositif d’entrée/sortie. Après tout, il s’agissait d’un appareil conçu pour permettre la saisie de messages, leur encodage, leur envoi, leur réception, leur décodage et leur impression.

Qu’importait au télétype que l’appareil à l’autre bout de la connexion ne soit pas un autre télétype ? Du moment qu’il parlait le même langage de codage, qu’il pouvait recevoir des messages et en renvoyer, il était parfaitement à l’aise.

Et, bien sûr, il utilisait un clavier plus ou moins standard.

Les télétypes émulés matériellement

Les télétypes sont rapidement devenus le moyen de communication privilégié avec les grands mini-ordinateurs et gros ordinateurs de l’époque.

Ils furent progressivement remplacés par des appareils qui imitaient ces machines électromécaniques en utilisant l’électronique. Ces nouveaux appareils disposaient de tubes cathodiques (CRT) au lieu de rouleaux de papier. Ils ne tremblaient plus lors de l’affichage des réponses de l’ordinateur et offraient des fonctionnalités auparavant impossibles, telles que le déplacement du curseur à l’écran, l’effacement de l’écran ou la mise en gras du texte.

Le DEC VT05 fut l’un des premiers exemples de télétype virtuel et un ancêtre du célèbre DEC VT100. Des millions de DEC VT100 furent vendus à travers le monde.

Les télétypes émulés par logiciel

Dans l’environnement de bureau de Linux et d’autres systèmes d’exploitation de type Unix, comme macOS, la fenêtre de terminal et des applications telles que xterm et konsole sont des exemples de télétypes virtuels. Cependant, ceux-ci sont entièrement émulés dans le logiciel. On les appelle des pseudo-télétypes, ou PTS en abrégé.

Et c’est là qu’entre en jeu la commande tty.

Que peut nous révéler tty ?

Sous Linux, il existe un multiplexeur pseudo-télétype qui gère les connexions de tous les pseudo-télétypes (PTS) de la fenêtre du terminal. Le multiplexeur est le maître et les PTS sont les esclaves. Le noyau interagit avec le multiplexeur via un fichier de périphérique situé dans /dev/ptmx.

La commande tty affichera le nom du fichier de périphérique que votre pseudo-télétype esclave utilise pour communiquer avec le maître. Il s’agit en fait du numéro de votre fenêtre de terminal.

Voyons ce que tty affiche pour notre fenêtre de terminal:

tty

La réponse nous indique que nous sommes connectés au fichier de périphérique situé dans /dev/pts/0.

Notre fenêtre de terminal, qui est une émulation logicielle d’un télétype (TTY), communique avec le multiplexeur pseudo-télétype en tant que pseudo-télétype (PTS). Et son numéro est le zéro.

L’option silencieuse

L’option -s (silent) de la commande tty permet de ne générer aucune sortie.

tty -s

Cependant, cela génère une valeur de sortie:

0: si l’entrée standard provient d’un appareil TTY, émulé ou physique.
1: si l’entrée standard ne provient pas d’un appareil TTY.
2: Erreur de syntaxe, des paramètres de ligne de commande incorrects ont été utilisés.
3: Une erreur d’écriture s’est produite.

Cette option est particulièrement utile dans les scripts Bash. Mais même sur la ligne de commande, nous pouvons illustrer comment exécuter une commande uniquement si l’on se trouve dans une fenêtre de terminal (une session TTY ou PTS).

tty -s && echo "In a tty"

Étant donné que nous sommes dans une session TTY, notre code de sortie est 0, et la seconde commande est exécutée.

La commande who

D’autres commandes permettent de connaître votre numéro TTY. La commande who affiche les informations de tous les utilisateurs connectés, y compris vous-même.

Alec et Mary sont connectés à distance à l’ordinateur Linux. Ils sont connectés aux PTS un et deux.

L’utilisateur dave est indiqué comme étant connecté à « :0 ».

Ceci représente l’écran et le clavier physiquement connectés à l’ordinateur. Bien que l’écran et le clavier soient des périphériques matériels, ils sont toujours connectés au multiplexeur via un fichier de périphérique. La commande tty révèle qu’il s’agit de /dev/pts/2.

who
tty

Accéder à un TTY

Il est possible d’accéder à une session TTY en plein écran en maintenant enfoncées les touches Ctrl + Alt, puis en appuyant sur l’une des touches de fonction.

Ctrl + Alt + F3 affichera l’invite de connexion de tty3.

Si vous vous connectez et que vous exécutez la commande tty, vous constaterez que vous êtes connecté à /dev/tty3.

Il ne s’agit pas d’un pseudo-télétype (émulé dans le logiciel) ; c’est un télétype virtuel (émulé dans le matériel). Il utilise l’écran et le clavier connectés à votre ordinateur pour émuler un télétype virtuel comme le faisait le DEC VT100.

Vous pouvez utiliser les touches de fonction Ctrl + Alt avec les touches de fonction F3 à F6 pour ouvrir quatre sessions TTY si vous le souhaitez. Par exemple, si vous êtes connecté à tty3, vous pouvez appuyer sur Ctrl + Alt + F6 pour accéder à tty6.

Pour revenir à votre environnement de bureau graphique, appuyez sur Ctrl + Alt + F2.

Appuyer sur Ctrl + Alt + F1 vous ramènera à l’invite de connexion de votre session de bureau graphique.

Autrefois, Ctrl + Alt + F1 à Ctrl + Alt + F6 ouvraient les consoles TTY en plein écran, et Ctrl + Alt + F7 vous ramenait à votre environnement de bureau graphique. Si vous utilisez une ancienne distribution Linux, il est possible que votre système fonctionne de cette manière.

Ces tests ont été effectués sur les versions actuelles de Manjaro, Ubuntu et Fedora, et ils se sont tous comportés de la façon suivante :

Ctrl + Alt + F1 : vous ramène à l’écran de connexion de l’environnement de bureau graphique.
Ctrl + Alt + F2 : vous ramène à l’environnement de bureau graphique.
Ctrl + Alt + F3 : ouvre TTY 3.
Ctrl + Alt + F4 : ouvre TTY 4.
Ctrl + Alt + F5 : ouvre TTY 5.
Ctrl + Alt + F6 : ouvre TTY 6.

L’accès à ces consoles en plein écran permet aux utilisateurs qui exploitent uniquement des installations Linux en ligne de commande (et de nombreux serveurs Linux sont configurés de cette façon) de disposer de plusieurs consoles.

Vous est-il déjà arrivé qu’une application dans votre environnement graphique sous Linux se bloque ? Vous pouvez alors accéder à l’une des sessions de la console TTY afin de tenter de résoudre le problème.

Vous pouvez utiliser les commandes top et ps pour essayer d’identifier l’application qui a planté, puis utiliser kill pour la terminer, ou simplement utiliser shutdown pour tenter de fermer le système de manière aussi propre que possible.

Trois petites lettres chargées d’histoire

La commande tty tire son nom d’un appareil de la fin des années 1800. Elle est apparue avec Unix en 1971 et continue d’être présente dans les systèmes d’exploitation de type Linux et Unix aujourd’hui.

Cette simple commande renferme une histoire riche et fascinante.