Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

perdu entre tty, pts, pty, console et autres...

4 réponses
Avatar
fabrice
Bonsoir à tous,

voila un moment que je tourne en rond pour essayer de comprendre la notion
de terminal, pseudo termiinal et la signfication exacte de certaines
notions.

Si je me connecte sur linux j'ai à ma disposition des consoles virtuelles
nommés /dev/tty0 ... 63
Mais je ne comprends pas tout a fait que représente ce fichier spécial.

Si je me connecte en runlevel 3 en root et que je fais un who j'obtiens :
> root tty1

Avec la commande tty
> /dev/tty1

J'aurais pensé être sur /dev/tty0 et non pas /dev/tty1

Si ensuite je lance le serveur X avec la commande STARTX et que je fais un
ps -a
j ai un processus attaché ay terminal PTS/0. Que représente t il ?

Voila globalement je suis perdu entre les TTY, PTS,PTY, Console virtuelle,
/dev/tty,/dev/pts ..
Si quelqu'un était assez charitable de m'éclairer ce serait génial..


merci par avance
fabrice

4 réponses

Avatar
Jack Holborn
Le Wed, 23 Aug 2006 22:00:24 +0200, fabrice a écrit :

Bonsoir à tous,
Bonsoir !



voila un moment que je tourne en rond pour essayer de comprendre la
notion de terminal, pseudo terminal et la signification exacte de
certaines notions.
Tu te coucheras moins bête ce soir mais c'est bien tout ce que tu

retireras de cette connaissance, personnellement ça ne m'a jamais servi
vraiment...En tout cas voici une "synthèse" de tout ce que j'ai pu
trouver le jour où moi (aussi) j'ai cherché à savoir.


Si je me connecte sur linux j'ai à ma disposition des consoles
virtuelles nommés /dev/tty0 ... 63
Debian?


Mais je ne comprends pas tout a fait que représente ce fichier
spécial.
Comme tu doit le savoir sur Unix tout est fichier(ou presque). Ce fichier

là sert à la communication entre le système et son utilisateur. Il faut
remonter assez loin d'aujourd'hui pour comprendre. A l'origine les
terminaux n'étaient pas "pseudo" c'étaient des périphériques télétype
qui se branchaient à un système par le port série et qui permettaient
d'envoyer et de recevoir des caractères. D'ailleurs /dev/tty* est
toujours un fichier de périphérique par caractère et tty est une
contraction de TeleTYpe :-)
Sous Linux il existe trois types différents de périphérique tty. Les
périphériques série sont utilisés avec les connexions série, par
exemple par modem ou câble série. Ils s'appellent ttySx à cause de la
différence avec les pseudo terminaux. Les terminaux virtuels (tty ou vt)
créent la connexion console commune, telle que les consoles virtuelles
disponibles lorsque tu appuies sur [Alt]-[Fx] sur la console système. Les
pseudo-terminaux (pts) créent une communication à double sens utilisée
par certaines applications de niveau supérieur, telles que XFree86. Le
fichier /proc/tty/drivers maintient une liste des périphériques tty
actuellement utilisés, moi j'ai:

/dev/tty /dev/tty 5 0 system:/dev/tty
/dev/console /dev/console 5 1 system:console
/dev/ptmx /dev/ptmx 5 2 system
/dev/vc/0 /dev/vc/0 4 0 system:vtmaster
serial /dev/ttyS 4 64-117 serial
pty_slave /dev/pts 136 0-1048575 pty:slave
pty_master /dev/ptm 128 0-1048575 pty:master
pty_slave /dev/ttyp 3 0-255 pty:slave
pty_master /dev/pty 2 0-255 pty:master
unknown /dev/tty 4 1-63 console

Toujours là? ok...

Comme tu peux le voir il y a deux composants par pseudo terminal : la
partie maître (tout ce qui est master dans la liste) est le programme qui
cherche à accéder au pseudo terminal, et la partie esclave (slave) est
le programme qui simule le terminal physique. Les composants maîtres
peuvent ouvrir le pseudo terminal par l'intermédiaire des fichiers
spéciaux /dev/ptyxx. En revanche, il existe deux protocoles de nommage
des fichiers spéciaux utilisés par les composants esclaves. L'ancienne
méthode utilisait les fichiers spéciaux /dev/ttyxx, qui existent
encore (utilisés pour les consoles sans framebuffer) mais qui a été
remplacée par un autre protocole, dans lequel le composant esclave doit
d'abord ouvrir le fichier spécial /dev/ptmx , qui lui donne le numéro n
de pseudo terminal qu'il doit simuler, et il ouvre ensuite le fichier
/dev/pts/n. Ce dernier fichier spécial est créé à la volée, grâce à
un système de fichier virtuel. Pour que ce mécanisme fonctionne, il faut
que le système de fichiers /dev/pts/ ait été également choisi parmi
les systèmes de fichiers à la configuration du noyau, et qu'il soit
monté (ça ce n'est plus obligatoire depuis devfs/udev). La valeur par
défaut du nombre de ces pts est 256

Si je me connecte en runlevel 3 en root et que je fais un who j'obtiens
:
root tty1
Ok tout va bien, maintenant démarre X, ouvre un terminal et retape la


commande :-)

Avec la commande tty
/dev/tty1
Cette commande restreint la liste au terminal dans lequel tu la tapes,


le man dit: "Afficher le nom du terminal associe à l'entrée
standard." C'était pratique pour le programme 'talk'.


J'aurais pensé être sur /dev/tty0 et non pas /dev/tty1
le premier tty qu'un utilisateur aura est le tty1, tty0 sert pour

l'affichage des messages au boot. Il n'est jamais libéré. Ce qui veut
dire qu'en réalité tu n'as pas droit à 64 consoles mais 63...


Si ensuite je lance le serveur X avec la commande STARTX et que je fais
un ps -a
j ai un processus attaché ay terminal PTS/0. Que représente t il ?
C'est ton entrée standard, voir plus haut, les programmes qui utilisent

le mode graphique (quel qu'il soit) ouvrent des pts

Voila globalement je suis perdu entre les TTY, PTS,PTY, Console
virtuelle, /dev/tty,/dev/pts ..
Si quelqu'un était assez charitable de m'éclairer ce serait génial..
J'espère avoir aidé, mais franchement, on s'en fout pas un peu de

tout ça?



merci par avance
De rien


--
A+
Jack H.
"Tant que ça aide...8+)"


Avatar
Jack Holborn
Le Thu, 24 Aug 2006 01:32:48 +0200, Jack Holborn a écrit :

[...]

Ouhlaa grosse boulette sur le tty0, en fait il n'est disponible que pour
le système et pour root. Plus d'infos dans le Text-Terminal-HOWTO

--
A+
Jack H.
"Tant que ça aide...8+)"
Avatar
Nicolas George
Jack Holborn wrote in message
:
Comme tu peux le voir il y a deux composants par pseudo terminal : la
partie maître (tout ce qui est master dans la liste) est le programme qui
cherche à accéder au pseudo terminal, et la partie esclave (slave) est
le programme qui simule le terminal physique.


Non, c'est le contraire : le maître est le côté qui simule le terminal
(xterm, ssh, screen, typiquement).

Pour le reste, rien à redire, c'est très bien.

J'aimerais juste ajouter qu'un terminal n'est pas simplement un flux de
caractères. La propriété la plus importante qu'a un terminal par rapport à
un flux de caractères, c'est la possibilité qu'il a d'envoyer des signaux
aux processus qui tournent dedans. C'est important dans le cas d'un
pseudo-terminal, parce que les droits ne sont parfois pas suffisants pour
envoyer directement le signal : si on utilise sudo dans un xterm, xterm n'as
pas les droits pour envoyer un signal aux processus lancés avec sudo, et
pourtant, Ctrl-C les interrompt.

Avatar
fabrice
Un passage rapide, pour télécharger le tout...
Je vais lire cela a tête reposée, :-$ dans le train demain matin. Vous serez
donc du voyage. !
Pour information, je suis sous une red hat enterprise.

Je lis tout cela et je vous dis tout ce que j ai compris.
En tout cas merci d'avoir pris le temps de cette longue réponse.

fabrice.
Je viens de faire un cop
"Jack Holborn" a écrit dans le message de
news:

Bonsoir à tous,
Bonsoir !



voila un moment que je tourne en rond pour essayer de comprendre la
notion de terminal, pseudo terminal et la signification exacte de
certaines notions.
Tu te coucheras moins bête ce soir mais c'est bien tout ce que tu

retireras de cette connaissance, personnellement ça ne m'a jamais servi
vraiment...En tout cas voici une "synthèse" de tout ce que j'ai pu
trouver le jour où moi (aussi) j'ai cherché à savoir.


Si je me connecte sur linux j'ai à ma disposition des consoles
virtuelles nommés /dev/tty0 ... 63
Debian?


Mais je ne comprends pas tout a fait que représente ce fichier
spécial.
Comme tu doit le savoir sur Unix tout est fichier(ou presque). Ce fichier

là sert à la communication entre le système et son utilisateur. Il faut
remonter assez loin d'aujourd'hui pour comprendre. A l'origine les
terminaux n'étaient pas "pseudo" c'étaient des périphériques télétype
qui se branchaient à un système par le port série et qui permettaient
d'envoyer et de recevoir des caractères. D'ailleurs /dev/tty* est
toujours un fichier de périphérique par caractère et tty est une
contraction de TeleTYpe :-)
Sous Linux il existe trois types différents de périphérique tty. Les
périphériques série sont utilisés avec les connexions série, par
exemple par modem ou câble série. Ils s'appellent ttySx à cause de la
différence avec les pseudo terminaux. Les terminaux virtuels (tty ou vt)
créent la connexion console commune, telle que les consoles virtuelles
disponibles lorsque tu appuies sur [Alt]-[Fx] sur la console système. Les
pseudo-terminaux (pts) créent une communication à double sens utilisée
par certaines applications de niveau supérieur, telles que XFree86. Le
fichier /proc/tty/drivers maintient une liste des périphériques tty
actuellement utilisés, moi j'ai:

/dev/tty /dev/tty 5 0 system:/dev/tty
/dev/console /dev/console 5 1 system:console
/dev/ptmx /dev/ptmx 5 2 system
/dev/vc/0 /dev/vc/0 4 0 system:vtmaster
serial /dev/ttyS 4 64-117 serial
pty_slave /dev/pts 136 0-1048575 pty:slave
pty_master /dev/ptm 128 0-1048575 pty:master
pty_slave /dev/ttyp 3 0-255 pty:slave
pty_master /dev/pty 2 0-255 pty:master
unknown /dev/tty 4 1-63 console

Toujours là? ok...

Comme tu peux le voir il y a deux composants par pseudo terminal : la
partie maître (tout ce qui est master dans la liste) est le programme qui
cherche à accéder au pseudo terminal, et la partie esclave (slave) est
le programme qui simule le terminal physique. Les composants maîtres
peuvent ouvrir le pseudo terminal par l'intermédiaire des fichiers
spéciaux /dev/ptyxx. En revanche, il existe deux protocoles de nommage
des fichiers spéciaux utilisés par les composants esclaves. L'ancienne
méthode utilisait les fichiers spéciaux /dev/ttyxx, qui existent
encore (utilisés pour les consoles sans framebuffer) mais qui a été
remplacée par un autre protocole, dans lequel le composant esclave doit
d'abord ouvrir le fichier spécial /dev/ptmx , qui lui donne le numéro n
de pseudo terminal qu'il doit simuler, et il ouvre ensuite le fichier
/dev/pts/n. Ce dernier fichier spécial est créé à la volée, grâce à
un système de fichier virtuel. Pour que ce mécanisme fonctionne, il faut
que le système de fichiers /dev/pts/ ait été également choisi parmi
les systèmes de fichiers à la configuration du noyau, et qu'il soit
monté (ça ce n'est plus obligatoire depuis devfs/udev). La valeur par
défaut du nombre de ces pts est 256

Si je me connecte en runlevel 3 en root et que je fais un who j'obtiens
:
root tty1
Ok tout va bien, maintenant démarre X, ouvre un terminal et retape la


commande :-)

Avec la commande tty
/dev/tty1
Cette commande restreint la liste au terminal dans lequel tu la tapes,


le man dit: "Afficher le nom du terminal associe à l'entrée
standard." C'était pratique pour le programme 'talk'.


J'aurais pensé être sur /dev/tty0 et non pas /dev/tty1
le premier tty qu'un utilisateur aura est le tty1, tty0 sert pour

l'affichage des messages au boot. Il n'est jamais libéré. Ce qui veut
dire qu'en réalité tu n'as pas droit à 64 consoles mais 63...


Si ensuite je lance le serveur X avec la commande STARTX et que je fais
un ps -a
j ai un processus attaché ay terminal PTS/0. Que représente t il ?
C'est ton entrée standard, voir plus haut, les programmes qui utilisent

le mode graphique (quel qu'il soit) ouvrent des pts

Voila globalement je suis perdu entre les TTY, PTS,PTY, Console
virtuelle, /dev/tty,/dev/pts ..
Si quelqu'un était assez charitable de m'éclairer ce serait génial..
J'espère avoir aidé, mais franchement, on s'en fout pas un peu de

tout ça?



merci par avance
De rien


--
A+
Jack H.
"Tant que ça aide...8+)"