Menu Fermer

Qu’est-ce que tty et comment utiliser la commande tty sur Linux

Lorsque l’on jeté un coup d’oeil aux processus Linux avec la commande PS par exemple, ou avec la commande who, whoami, on peut tomber sur une colonne TTY.
Mais qu’est-ce qu’un TTY ?
Très peu mentionné, pourtant le sous-système TTY est au cœur de la conception de Linux et UNIX en général.

Ce tutoriel vous expliquer ce que sont les TTY et comment utiliser la commande TTY sur Linux.

Qu'est-ce que tty et comment utiliser la commande tty sur Linux

Un peu d’histoire sur les ttys sur Unix

Sur Unix, tty provient du mot anglais TeleTYpewriter que l’on peut traduire par téléimprimeur, télétype ou téléscripteurs.
A la fin du XIXe siècle et pendant tout une partie du XXe siècle, les communications à longue distance ont été effectués par téléscripteur.
c’est un appareil d’entrée/sortie qui comprend un clavier alphanumérique, un émetteur de signaux électriques commandé par les barres du clavier, un traducteur des signaux reçus et un dispositif d’impression sur page ou sur bande.
Cela permet envoyer et recevoir des messages dactylographiés à travers divers canaux de communication tels qu’une liaison filaire ou onde radio.
Les messages télégraphiées ont utilisé les téléscripteurs.
On les voit aussi souvent dans les films de la seconde guerre mondiale, dans les centres de communication de l’armée avec de nombreuses secrétaires sur des bureaux.

Un téléscripteurs avec l'entrée clavier et la sortie d'impression
https://en.wikipedia.org/wiki/Teleprinter

Dans les années 70 sont apparus, des téléimprimeurs ressemblant à des machines à écrire qui avait pour sortie une imprimante.

téléimprimeurs qui ressemblent à une machine à écrire
https://en.wikipedia.org/wiki/Teleprinter

Puis à la fin des 1970, les téléimprimeurs ont été largement remplacés par des terminaux informatiques entièrement électroniques qui ont généralement un moniteur d’ordinateur au lieu d’une imprimante.
Ces terminaux à base de CRT commençaient à émerger, tels que la série VT de Dell. À l’origine, l’interface ne pouvait imprimer que le texte sur l’écran, qui utilisait 80 colonnes et 24 lignes. L’interface graphique évolue plus tard et a permis de dessiner des images et d’utiliser un dispositif de pointage tel qu’une souris.

Un terminal informatique

Ainsi, dans de nombreux langages de programmation, le texte de sortie de l’affichage dans une fenêtre de terminal est appelé “impression”.
À l’origine, ce n’était pas une métaphore mais un fait.

De ce fait, le terme tty correspond au téléimprimeur qui correspond aux terminaux utilisés au moment de la création d’Unix qui et un périphérique d’entrée/sortie.
Linux étant un descendant libre d’Unix, il hérite des terminologies.
A noter que MacOSX étant aussi issu d’Unix, il utilise aussi ces terminologies.

Qu’est-ce que tty sur Linux

Le système d’exploitation Linux représente tout dans un système de fichiers, les périphériques matériels à travers udev que nous attachons sont également représentés en tant que fichier.
Le terminal est également représenté comme un fichier.
Il vous permet d’interagir avec le système en passant sur les données (vous entrez) au système et affichez la sortie produite par le système.

Dans la terminologie UNIX, une TTY est un type particulier de fichier de périphérique qui implémente un certain nombre de commandes supplémentaires (IOCTLS) au-delà de la lecture et de l’écriture. Dans sa signification la plus courante, le terminal est synonyme de TTY. Certaines TTYS sont fournies par le noyau pour le compte d’un périphérique matériel, par exemple avec l’entrée provenant du clavier et de la sortie à un écran de mode texte, ou avec l’entrée et la sortie transmises sur une ligne de série.
Les autres TTYS, parfois appelées pseudo-états, sont fournis (à travers une mince couche de noyau) par des programmes appelés émulateurs de terminaux, tels que Xterm (exécuté dans le système X Window), l’écran (qui fournit une couche d’isolement entre un programme et un autre terminal ), SSH (qui relie un terminal sur une machine avec des programmes sur une autre machine), attendez-vous (pour les interactions de terminal de script), etc.

Ainsi, votre terminal est représenté par le fichier /dev/tty
Une copie de fichiers vers ce dernier montre que l’on obtient en sortie ce fichier.

[email protected]:~$ echo "C'est toto qui..." > /tmp/toto.fichier
[email protected]:~$ cp /tmp/toto.fichier /dev/tty
C'est toto qui...
Qu'est-ce que /dev/tty sur Linux

Un équivalent :

echo "c'est toto qui" > /dev/tty

Tous les programmes exécutés sont rattachés au tty de l’utilisateur.

Qu’est-ce qu’un pts ?

Dès lors que vous connectez à Linux, que ce soit en ouvrant une session sur votre environnement de bureau ou vous connectant à distant en SSH, vous ouvrez un terminal et un tty.

Mais Linux peut parfois créer un pts (Pseudo terminal Slave – pseudo Terminal Esclave) avec un identifiant particulier : /dev/pts/0, /dev/pts/1, /dev/pts/2, ….

La différence entre TTY et PTS est le type de connexion à l’ordinateur.

  • Les ports TTY sont des connexions directes à l’ordinateur tel qu’un clavier / souris ou une connexion série sur le périphérique.
  • Les connexions PTS sont des connexions SSH ou des connexions Telnet. Toutes ces connexions peuvent se connecter à un shell qui vous permettra de saisir des commandes à l’ordinateur.

En d’autres termes, c’est une fenêtre Xterm ou une fenêtre de Konsole, ou n’importe quel utilité que vous utilisez. Ils se plongent dans la vie que vous leur demandez et obtenez des numéros séquentiels: pts / 0, puis pts / 1 et ainsi de suite. La console physique est le matériel qui est réellement attaché à votre boîte – vous en avez probablement un. C’est étiqueté “: 0” et est désigné comme la “console” réelle.

  • La commande ps -l permet de lister les processus Linux et le TTY rattachés.
  • La commande w, who, whoami liste les utilisateurs connectés et leurs TTY respectifs
Les connexions PTS sur Linux

TTY, terminal et environnement de bureau

Les distributions Linux fournissent plusieurs consoles que l’on peut atteindre par les raccourcis clavier CTRL+ALT+ FX avec les touches de F1 à F6.

Par exemple, vous pouvez accéder à une session TTY en plein écran en maintenant les touches CTRL+ALT+F4 fera apparaître l’invite de connexion de TTY4.
Si vous vous connectez et émettez la commande TTY, vous verrez que vous êtes connecté à /dev/tty4.
Ce n’est pas un pseudo-teletype (émulé dans le logiciel); C’est un télétype virtuel (émulé dans du matériel). Il utilise l’écran et le clavier connecté à votre ordinateur, pour imiter un télétype virtuel.

Se connecter avec CTRL+ALT+F4 sur une console TTY4

Voici la liste des combinaison de touches sur Ubuntu. Sur les autres distributions l’environnement graphique peut s’ouvrir sur une autre console :

  • CTRL+ALT+F1 : Vous retourne à l’écran de connexion de l’environnement de bureau graphique
  • CTRL+ALT+F2: Vous retourne à l’environnement de bureau graphique
  • CTRL+ALT+F3: Ouvre TTY3
  • CTRL+ALT+F4 Ouvre TTY4
  • CTRL+ALT+F5: Ouvre TTY5
  • CTRL+ALT+F6: Ouvre TTY6

Par exemple ci-dessous, nous avons l’environnement de bureau en TTY :0 qui correspond à l’écran 0.
On voit le processus du gestionnaire d’affichage  GDM.
Ainsi qu’un TTy4 avec le Shell Bash.

La commande who retourne le TTY, l'utilisateur et le shell

Comment utiliser la commande tty sur Linux

Il existe une commande appelée TTY qui affiche des informations relatives au terminal.
La commande TTY affiche fondamentalement le nom de fichier du terminal connecté à une entrée standard.

[email protected]:~# tty
/dev/pts/0

Notre fenêtre de terminal, qui est une émulation logicielle d’un télétype (TTY), est interfacée au multiplexeur pseudo-teleType en tant que pseudo-teletype (PTS). Et il arrive d’être numéro zéro.

L’option -s (silencieuse) provoque la génération de non-sortie.
Il est toutefois de produire une valeur de sortie dans les cas suivant :

  • 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 périphérique 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

On peut l’utiliser dans un script bash pour tester si ce dernier s’exécute depuis un TTY.