Dans Ubuntu 10.04, si je vérifie sous / dev, il y a plus de 50 ttys. tty0, tty1, tty2 ....
Je comprends que tty est un périphérique de caractères pour l'entrée / sortie de la console.
mais pourquoi y en a-t-il tant? est-ce quelque chose comme la piscine?
et quelle est la différence entre / dev / pts / 0, 1, 2 ..., / dev / tty?
Si j'ouvre un terminal, un nouveau numéro est créé sous / dev / pts. mais je ne sais pas quand / dev / tty? est utilisé.
même si je crée une connexion SSH, le nombre de / dev / tty est le même.
et si je le fais
cat /dev/tty0
et tapez quelque chose au clavier, j'obtiens des sorties correspondantes. Pourquoi cela arrive-t-il?
Réponses:
Les ttys ne sont pas seulement des périphériques d'entrée / sortie. Ils font également un travail spécial en tant que terminal de contrôle pour une session, comme l'envoi de signaux (Ctrl + C). / dev / ttyNN sont des consoles virtuelles, qui s'affichent en plein écran sur le moniteur.
Les terminaux démarrent à partir de / dev / tty1. Vous pouvez passer à ces consoles, généralement, en appuyant sur les touches Ctrl + Alt + Fn.
par exemple, Ctrl + Alt + F1 vous amène au premier terminal virtuel. De nos jours, la plupart des distributions Linux exécutent le serveur X à partir du tty1. Donc, appuyer sur Ctrl + Alt + F1 peut ne pas avoir d'effet.
Ctrl + Alt + F2 vous amènera au deuxième terminal. Habituellement, les distributions exécutent un programme de connexion (agetty) sur le terminal virtuel.
Les programmes de connexion vous fournissent une invite de connexion et vous permettent de vous connecter avec un nom d'utilisateur / mot de passe. Les scripts d'initialisation décident où tout le programme de connexion sera exécuté. Donc, en fonction de cela, vous pouvez ou non voir une invite de connexion, disons tty9. Pour revenir à votre interface graphique, appuyez sur Ctrl + Alt + F1 (comme dans l'exemple de sortie ci-dessus).
/ dev / tty0 est un périphérique spécial, qui pointe vers le terminal actuel. Ainsi, quel que soit l'endroit où vous l'exécutez (n'importe quelle console virtuelle), tout ce qui est lu / écrit sur tty0 va à votre terminal actuel.
La deuxième colonne de «ps ax» donne également le terminal de contrôle du programme. Pour certains programmes, comme les démons, vous pouvez voir que la colonne est «?», Ce qui signifie qu'ils ne sont pas liés à un terminal.
/ dev / pts / 0 etc sont des périphériques psuedo-terminaux, qui ne sont pas connectés à l'affichage système. par exemple, un terminal que vous obtenez lorsque vous ouvrez un gnome-terminal ou tout autre terminal GUI. Il s'agit d'une approche client-serveur où le côté client sera exporté vers des programmes, comme bash. Les données envoyées par le programme au pseudo-terminal sont envoyées du côté «serveur» (qui est généralement surveillé par un autre programme, comme gnome-terminal). Le processus de contrôle (côté serveur) détermine ce qui doit être envoyé au terminal, qui est finalement vu par le client. Ces appareils vous aident à ouvrir plusieurs `` terminaux GUI '' sans aucune limite sur votre système, tout en fournissant le même ancien terminal que les commandes (ioctl (), réglage des couleurs, envoi de signaux [Ctrl + C] etc.).
la source
man /dev/pts
c'est aussi un bon début,man termios
notez que le client / serveur est bidirectionnel parmi les ptys - ptm et pts - où un terminal virtuel comme gnome-terminal, ou xterm est généralement connecté au maître et un shell comme bash, l'esclave ./dev/tty
trouve le terminal de contrôle actuel, mais je ne sais pas ce qui est/dev/tty0
, cependant,/dev/tty1
le Linux KMSCON. Et/dev/tty7
est le serveur X.Je veux juste clarifier les relations de ce genre de choses.
Premièrement, / dev / tty est au niveau du processus, il peut s'agir de ttyn (tty1, tty2, ...), ttySn (ttyS0, ttyS1), pty (pts / 0, pts / 1) et autre chose.
/ dev / tty0 est un alias de la console virtuelle actuelle (au premier plan), il peut donc s'agir de tty1, tty2, etc. Notez que ttyS0 n'est pas un alias; C'est le premier port série.
/ dev / console est la console système, elle pointe vers / dev / tty0 par défaut. Il peut s'agir de ttyn, ttySn, ttyUSBn, lpn, etc.
En gros, / dev / tty> / dev / cosole> / dev / tty0
la source