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.
$ ps ax | grep Xorg | grep -v grep
1504 tty1 Ss+ 44:57 /usr/bin/Xorg :0 -background none -verbose -auth /var/run/gdm/auth-for-gdm-rfsWyA/database -nolisten tcp vt1
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.
$ ps ax | grep tty2 | grep -v grep
31865 tty2 Ss+ 0:00 /sbin/agetty tty2 38400
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.).