En ubuntu 10.04, si verifico bajo / dev, hay más de 50 ttys. tty0, tty1, tty2 ...
Entiendo que tty es un dispositivo de caracteres para la entrada / salida de la consola.
pero ¿por qué hay tantos de ellos? ¿Es algo así como la piscina?
¿Y cuál es la diferencia entre / dev / pts / 0, 1, 2 ..., / dev / tty?
Si abro un terminal, se crea un nuevo número en / dev / pts. pero no sé cuando / dev / tty? es usado
incluso si creo una conexión SSH, el número de / dev / tty s es el mismo.
y si lo hago
cat /dev/tty0
y escribo algo en el teclado, obtengo las salidas correspondientes. ¿Por qué está pasando esto?
Respuestas:
Los ttys no son solo dispositivos de entrada / salida. También hacen un trabajo especial de actuar como terminal de control para una sesión, como enviar señales (Ctrl + C). / dev / ttyNN son consolas virtuales, que son pantallas completas en el monitor.
Los terminales comienzan desde / dev / tty1. Por lo general, puede cambiar a estas consolas presionando las teclas Ctrl + Alt + Fn.
por ejemplo, Ctrl + Alt + F1 te lleva a la primera terminal virtual. Hoy en día, la mayoría de las distribuciones de Linux ejecutan el servidor X desde tty1. Por lo tanto, presionar Ctrl + Alt + F1 puede no tener efecto.
Ctrl + Alt + F2 lo llevará a la segunda terminal. Por lo general, las distribuciones ejecutan un programa de inicio de sesión (agetty) en el terminal virtual.
Los programas de inicio de sesión le proporcionan una solicitud de inicio de sesión y le permiten iniciar sesión con nombre de usuario / contraseña. Los scripts de inicio deciden dónde se ejecutará todo el programa de inicio de sesión. Entonces, dependiendo de eso, puede o no ver un mensaje de inicio de sesión, diga tty9. Para volver a su interfaz GUI, presione Ctrl + Alt + F1 (como en la salida de ejemplo anterior).
/ dev / tty0 es un dispositivo especial que apunta al terminal actual. Entonces, independientemente de dónde lo ejecute (cualquier consola virtual), cualquier cosa leída / escrita en tty0 va a su terminal actual.
La segunda columna en 'ps ax' también proporciona el terminal de control del programa. Para algunos programas, como los demonios, puede ver que la columna es '?', Lo que significa que no están vinculados a un terminal.
/ dev / pts / 0 etc. son dispositivos psuedo-terminales, que no están conectados a la pantalla del sistema. por ejemplo, la terminal que obtienes cuando abres una terminal gnome o cualquier otra terminal GUI. Estos son enfoques basados en cliente-servidor donde el lado del cliente se exportará a programas, como bash. Los datos enviados por el programa al pseudo terminal se envían al lado del 'servidor' (que generalmente es monitoreado por otro programa, como gnome-terminal). El proceso de control (del lado del servidor) determina lo que debe enviarse al terminal, que eventualmente ve el cliente. Estos dispositivos lo ayudan a abrir múltiples 'terminales GUI' sin ningún límite en su sistema, y aún proporcionan el mismo terminal antiguo como controles (ioctl (), configuración de color, envío de señales [Ctrl + C] etc.).
fuente
man /dev/pts
es un buen comienzo,man termios
tenga en cuenta que el cliente / servidor es bidireccional entre los ptys - ptm y pts - donde un terminal virtual como gnome-terminal o xterm generalmente está conectado al maestro y un shell como bash, el esclavo ./dev/tty
está el terminal de control actual, pero no sé qué/dev/tty0
, sin embargo,/dev/tty1
es el KMSCON de Linux. Y/dev/tty7
es el servidor X.Solo quiero aclarar las relaciones de este tipo de cosas.
Primero, / dev / tty está en el nivel de proceso, puede ser ttyn (tty1, tty2, ...), ttySn (ttyS0, ttyS1), pty (pts / 0, pts / 1) y algo más.
/ dev / tty0 es un alias de la consola virtual actual (en primer plano), por lo que podría ser tty1, tty2, etc. Tenga en cuenta que ttyS0 no es un alias; Es el primer puerto serie.
/ dev / console es la consola del sistema, apunta a / dev / tty0 como valor predeterminado. Puede ser ttyn, ttySn, ttyUSBn, lpn, etc.
Aproximadamente, / dev / tty> / dev / cosole> / dev / tty0
fuente