¿Qué es un TTY en Linux? (y cómo utilizar el comando tty)

Máquina de escribir para teletipo
Junio ​​Marie Sobrito / Shutterstock.com

¿Qué hace el ttycomando? Imprime el nombre de la terminal que estás usando. TTY significa «teletipo». ¿Cuál es la historia detrás del nombre del comando? Eso requiere un poco más de explicación.

Teleimpresoras del siglo XIX

En las décadas de 1830 y 1840, se desarrollaron máquinas conocidas como teleimpresoras . Estas máquinas podrían enviar mensajes mecanografiados «por el cable» a ubicaciones distantes. Los mensajes fueron escritos por el remitente en una especie de teclado. Fueron impresos en papel en el extremo de recepción. Fueron un paso evolutivo en la telegrafía , que anteriormente se había basado en Morse  y códigos similares.

Los mensajes se codificaron y transmitieron, luego se recibieron, decodificaron e imprimieron. Se utilizaron varias técnicas para codificar y decodificar los mensajes. El más famoso, y uno de los más prolíficos, fue patentado en 1874 por  Émile Baudot , que da nombre a la velocidad en baudios . Su esquema de codificación de caracteres fue anterior a ASCII en 89 años.

La codificación de Baudot finalmente se convirtió en lo más parecido a un estándar en la codificación de teleimpresores, y fue adoptada por la mayoría de los fabricantes. El diseño de hardware original de Baudot tenía solo cinco teclas, similar a las teclas de un piano. Se requirió que el operador aprendiera una combinación de teclas particular para cada letra. Finalmente, el sistema de codificación Baudot se acopló a una distribución de teclado tradicional.

Para marcar ese avance, las máquinas se denominaron teletipos. Esto se redujo a teletipos y, finalmente, a TTY. De ahí es de donde obtenemos el acrónimo  TTY, pero ¿qué tiene que ver la telegrafía con la informática?

ASCII y télex

Cuando ASCII llegó en 1963, fue adoptado por los fabricantes de teletipos. A pesar de la invención y el uso generalizado del teléfono, los teletipos seguían siendo fuertes.

Telex  era una red mundial de teletipos que permitía enviar mensajes escritos a todo el mundo. Fueron el principal medio de transmisión de mensajes escritos en el período que siguió a la Segunda Guerra Mundial hasta el auge de las máquinas de fax en la década de 1980.

Relacionado:  Cómo usar SUID, SGID y Sticky Bits en Linux

Las computadoras también estaban evolucionando. Se estaban volviendo capaces de interactuar con los usuarios en tiempo real y de dar soporte a múltiples usuarios. El antiguo método de trabajo por lotes se volvió insuficiente. La gente no quería esperar 24 horas o más por sus resultados. Hacer pilas de tarjetas perforadas y esperar durante la noche los resultados ya no era aceptable.

Las personas necesitaban un dispositivo que les permitiera ingresar instrucciones y recibir los resultados. La gente quería eficiencia.

El teletipo reutilizado

El teletipo era el candidato perfecto como dispositivo de entrada / salida. Después de todo, era un dispositivo diseñado para permitir que los mensajes se escribieran, codificaran, enviaran, recibieran, decodificaran e imprimieran.

¿Qué le importaba al teletipo si el dispositivo en el otro extremo de la conexión no era otro teletipo? Siempre que hablara el mismo idioma de codificación y pudiera recibir mensajes y enviarlos de vuelta, el teletipo era feliz.

Y, por supuesto, utilizó un teclado más o menos estándar.

Teletipos emulados por hardware

Los teletipos se convirtieron en el medio predeterminado para interactuar con las grandes computadoras mini y mainframe de esa época.

Finalmente fueron reemplazados por dispositivos que emulaban esas máquinas electromecánicas que usaban electrónica. Estos tenían tubos de rayos catódicos (CRT) en lugar de rollos de papel. No temblaron al entregar respuestas desde la computadora. Permitían funciones hasta ahora imposibles, como mover el cursor por la pantalla, borrar la pantalla, poner texto en negrita, etc.

El DEC VT05 fue un ejemplo temprano de un teletipo virtual y un antepasado del famoso DEC VT100 . Se vendieron millones de DEC VT100.

Teletipos emulados por software

En el entorno de escritorio de Linux y otros sistemas operativos similares a Unix, como macOS, la ventana de terminal y aplicaciones como x-term y Konsole son ejemplos de teletipos virtuales. Pero estos se emulan completamente en software. Se llaman pseudo-teletipos. Esto se redujo a PTS.

Y ahí es donde ttyentra en juego.

¿Qué puede decirnos tty?

En Linux, hay un multiplexor de pseudo-teletipo que maneja las conexiones de todos los pseudo-teletipos de ventana de terminal (PTS). El multiplexor es el maestro y el PTS son los esclavos. El multiplexor es direccionado por el kernel a través del archivo de dispositivo ubicado en / dev / ptmx.

Relacionado:  Cómo usar journalctl para leer registros del sistema Linux

El ttycomando imprimirá el nombre del archivo de dispositivo que su pseudo-teletipo esclavo está usando para interactuar con el maestro. Y ese, efectivamente, es el número de su ventana de terminal.

Veamos qué ttyinformes para nuestra ventana de terminal:

tty

tty en una ventana de terminal

La respuesta muestra que estamos conectados al archivo del dispositivo en / dev / pts / 0.

Nuestra ventana de terminal, que es una emulación de software de un teletipo (TTY), está interconectada con el multiplexor de pseudo-teletipo como un pseudo-teletipo (PTS). Y resulta ser el número cero.

La opción silenciosa

La -sopción (silenciosa) hace ttyque no se genere salida.

tty -s

tty -s en una ventana de terminal

Sin embargo, produce un valor de salida:

  • : si la entrada estándar proviene de un dispositivo TTY, emulado o físico.
  • 1 : si la entrada estándar no proviene de un dispositivo TTY.
  • 2 : Error de sintaxis, se utilizaron parámetros de línea de comando incorrectos.
  • 3 : Se ha producido un error de escritura.

Es probable que esto sea más útil en scripts Bash. Pero, incluso en la línea de comandos, podemos demostrar cómo ejecutar un comando solo si se está ejecutando en una ventana de terminal (una sesión TTY o PTS).

tty -s && echo "En un tty"

tty -s && echo "In a tty" en una ventana de terminal

Debido a que estamos ejecutando en una sesión de TTY, nuestro código de salida es 0 y se ejecuta el segundo comando.

"En un tty" en una ventana de terminal

El que manda

Otros comandos pueden revelar su número TTY. El whocomando mostrará información de todos los usuarios registrados, incluido usted.

Alec y Mary están conectados de forma remota a la computadora Linux. Están conectados a PTS uno y dos.

El usuario dave se muestra conectado a “: 0”.

Esto representa la pantalla y el teclado conectados físicamente a la computadora. Aunque la pantalla y el teclado son dispositivos de hardware, aún están conectados al multiplexor a través de un archivo de dispositivo. ttyrevela que es / dev / pts / 2.

OMS
tty

quién y tty en una ventana de terminal

Acceder a un TTY

Puede acceder a una sesión TTY de pantalla completa manteniendo presionadas las teclas Ctrl + Alt y presionando una de las teclas de función.

Ctrl + Alt + F3 hará que aparezca el mensaje de inicio de sesión de tty3.

consola tty3

Si ttyinicia sesión y emite el comando, verá que está conectado a / dev / tty3.

Relacionado:  Cómo grabar un archivo ISO en una unidad USB en Linux

Este no es un pseudo-teletipo (emulado en software); es un teletipo virtual (emulado en hardware). Está usando la pantalla y el teclado conectados a su computadora, para emular un teletipo virtual como solía hacer el DEC VT100.

Puede usar las teclas de función Ctrl + Alt con las teclas de función F3 a F6 y tener cuatro sesiones TTY abiertas si lo desea. Por ejemplo, puede iniciar sesión en tty3 y presionar Ctrl + Alt + F6 para ir a tty6.

consola tty6

Para volver a su entorno de escritorio gráfico, presione Ctrl + Alt + F2.

Si presiona Ctrl + Alt + F1, regresará al indicador de inicio de sesión de su sesión de escritorio gráfico.

En un momento, Ctrl + Alt + F1 hasta Ctrl + Alt + F6 abrirían las consolas TTY de pantalla completa, y Ctrl + Alt + F7 lo devolverían a su entorno de escritorio gráfico. Si está ejecutando una distribución de Linux anterior, este podría ser el comportamiento de su sistema.

Esto se probó en las versiones actuales de Manjaro, Ubuntu y Fedora y todos se comportaron así:

  1. Ctrl + Alt + F1 : lo regresa a la pantalla de inicio de sesión del entorno de escritorio gráfico.
  2. Ctrl + Alt + F2 : lo regresa al entorno de escritorio gráfico.
  3. Ctrl + Alt + F3 : abre TTY 3.
  4. Ctrl + Alt + F4 : abre TTY 4.
  5. Ctrl + Alt + F5 : abre TTY 5.
  6. Ctrl + Alt + F6 : abre TTY 6.

Tener acceso a estas consolas de pantalla completa permite a las personas que utilizan instalaciones de Linux únicamente desde la línea de comandos, y muchos servidores Linux están configurados de esta manera, tener varias consolas disponibles.

¿Alguna vez ha estado trabajando en una máquina Linux con un entorno de escritorio gráfico y algo provocó que su sesión se congelara? Ahora puede saltar a una de las sesiones de la consola TTY para poder intentar rectificar la situación.

Puede usar topy pspara tratar de identificar la aplicación fallida, luego usar killpara terminarla, o simplemente usar shutdownpara intentar cerrar con tanta elegancia como lo permita el estado de la computadora.

Tres pequeñas letras con mucha historia

El ttycomando recibe su nombre de un dispositivo de finales de 1800, apareció en Unix en 1971 y es parte de los sistemas operativos Linux y similares a Unix hasta el día de hoy.

El pequeño tiene una gran historia detrás de él.