¿Por qué UNIX / Linux proporciona múltiples terminales?

8

En la década de 1970 teníamos una terminal de hardware con interfaz CUI (interfaz de usuario de caracteres) para entrada / salida.

Ahora, tenemos emuladores de terminal ( Ctrl+ Alt+ Fn) en el mundo Unix / Linux.

En Ubuntu OS, veo siete emuladores de terminal, donde GUI ocupa el séptimo emulador de terminal ( Ctrl+ Alt+ F7).

Por ejemplo, este es mi primer emulador de terminal ( Ctrl+ Alt+ F1)

$ tty
/dev/tty0

¿Por qué Unix / Linux proporciona múltiples emuladores de terminal?

cambio excesivo
fuente
8
Siempre hubo una demanda para ello. Se usó un programa llamado "pantalla" cuando solo había un terminal disponible.
VPfB
77
¡@vpfb Screen todavía está disponible y es una parte integral de mi flujo de trabajo!
tpg2114
1
Creo que lo que estás preguntando aquí no son emuladores de terminal (que son programas como xterm, rxvt, & c que se ejecutan como aplicaciones gráficas en X), sino terminales en modo de texto que no ejecutan gráficos. El único uso que realmente he encontrado para esos (y que no durante unos buenos años) es depurar las cosas cuando X no funciona correctamente. OTOH Realizo la mayor parte de mi trabajo real en ventanas xterm, y podría tener de tres a una docena o más abiertas.
jamesqf
@jamesqf ¿por qué no llamas a ctrl + alt + f1 como emulador de terminal? Debido a que no es el terminal CUI de hardware que teníamos en 1970 de
overexchange
2
@overexchange: no los llamo así porque esa no es la terminología utilizada por personas familiarizadas con ellos. Si busca el "emulador de terminal de Linux", obtendrá muchos resultados, la mayoría de los cuales no tienen nada que ver con las consolas en modo texto que obtiene con Ctl-Alt-F [1-7].
jamesqf

Respuestas:

25

¿Por qué UNIX / Linux proporciona emuladores de terminal múltiple [en la consola]?

Por la misma razón, es probable que su emulador de terminal GUI admita pestañas (p. Ej., Terminal GNOME), y si no (p rxvt. Ej. ), Entonces, por la misma razón, lanzar una segunda instancia de aplicación de terminal GUI no solo tira la primera al primer plano y sale, obligándote a usar la primera instancia.

Rutinariamente uso al menos 3 ventanas de terminal en mi trabajo, y a menudo más:

  1. Editor de texto para el lado del servidor del sistema en el que estoy trabajando

  2. Editor de texto para el lado del cliente del mismo sistema

  3. Ventana de comando para ejecutar el servidor

Raramente necesito un cuarto terminal para ejecutar el programa cliente, ya que generalmente se ejecuta en otro lugar (aplicación web, aplicación GUI nativa, aplicación móvil, etc.), pero si estuviera desarrollando un cliente CLI para mi aplicación de servidor, tendría un terminal separada abierta para ello también.

En el pasado, antes de sudohacerse popular, mantenía una rootterminal abierta todo el tiempo.

Raramente uso cuadros Unix / Linux interactivamente en la consola sin una GUI en estos días, pero a menudo los ejecuto sin cabeza y accedo a ellos a través de SSH. Mi cliente terminal SSH preferido admite pestañas, configuradas como anteriormente.

Uno de mis proyectos de pasatiempo actuales me obliga a usar un terminal de vidrio antiguo de vez en cuando, lo que significa que ya no tengo múltiples ventanas de terminal, así que finalmente estoy aprendiendo un poco sobre GNUscreen , un programa que nunca había usado antes, ya que tenía ya sea múltiples terminales de consola o múltiples terminales GUI. Y lo que screenhacer? Entre otras cosas, puede configurarlo para darle múltiples terminales virtuales en una sola pantalla, tal como lo hace Linux con Ctrl- Alt- .Fx

Warren Young
fuente
10
Lo mejor de la pantalla, aparte de tener múltiples terminales en una terminal de consola tonta, es que puede desconectarse, cerrar sesión, volver a iniciar sesión y volver a conectarse a las sesiones, y los procesos o lo que sea que esté haciendo en los términos de la pantalla sigue adelante.
ivanivan
Además de lo que dijo @ivanivan, otras personas pueden ver su sesión de pantalla y varias personas pueden verla al mismo tiempo. Es como compartir el escritorio de la consola.
stanri
Nota al margen: hay algunas alternativas disponibles para el uso de pura pantalla superuser.com/q/423310
moooeeeep
18

Esta es una característica proporcionada por casi todos, si no todos, Unix y Unix les gusta ejecutarse en hardware x86. Curiosamente, las consolas virtuales fueron introducidas por primera vez en un Unix por Microsoft Xenix a principios de los años ochenta, y también estaban disponibles en CP / M concurrente.

Esta característica se integró más tarde en AT&T SVR4 Unix, Solaris y fue prestada por BSD y Linux.

¿Por qué UNIX / Linux proporciona múltiples emuladores de terminal?

Cuando se introdujeron por primera vez, no había un entorno gráfico disponible para las máquinas que ejecutaban estas implementaciones de Unix. Si bien tener un terminal físico conectado a un servidor central de Unix a través de líneas RS232 era el estándar, conectar múltiples terminales a una PC estándar con Xenix era excesivo si el objetivo era que un solo usuario ejecutara múltiples programas interactivos simultáneamente. Los terminales virtuales proporcionaron una solución elegante y conveniente para ese problema.

Otras implementaciones de Unix luego proporcionaron la misma característica para satisfacer la misma necesidad.

Cuando los entornos gráficos, especialmente X11, se extendieron, poder ver múltiples emuladores de terminal al mismo tiempo en la misma pantalla fue una mejora significativa. Sin embargo, la función de consola virtual generalmente se mantuvo solo porque era conveniente poder cambiar a una consola si el entorno gráfico se congela o no funciona por alguna razón.

Tenga en cuenta que a las utilidades les gusta screeny tmuxllegaron mucho más tarde que a los terminales virtuales para generalizar la misma funcionalidad. Su ventaja es que pueden usarse no solo en la consola física local, sino también en cualquier sesión, ya sea local o remota (por ejemplo telnet, ssh). Cuando se usan en la consola física, las consolas virtuales siguen siendo útiles, ya que son funcionales en algunas situaciones en las que screen/ tmuxno puedo ayudar, como si X11 está congelado, o si una ventana ha capturado el foco y no lo libera.

La virtualización basada en contenedores, como las zonas de Solaris o Linux LXC, también proporciona un método para conectarse a la consola del contenedor a través zlogin -C zoney lxc-console -t 0 -n containerrespectivamente.

jlliagre
fuente
4

Supongo que una buena razón para tener emuladores de terminal adicionales es que si hace algo mal en su interfaz gráfica y se vuelve inutilizable, puede cambiar rápidamente a un emulador de terminal y corregir todos los problemas que tiene en la interfaz gráfica. En realidad, esto sucede con bastante frecuencia cuando realiza cambios en su administrador de ventanas u otras funciones de la interfaz gráfica. Supongo que también sería útil tener un par más de terminales, sin embargo, tener 6 overop de la interfaz gráfica principal parece un poco excesivo.

También corrígeme si estoy equivocado, pero ¿no es posible ejecutar múltiples comandos como diferentes usuarios desde un solo emulador de terminal?

usuario166213
fuente
"si haces algo mal", eso explica por qué hay una consola virtual, no por qué hay múltiples (es decir, responder una pregunta diferente). "¿No es posible ejecutar múltiples comandos como diferentes usuarios desde un único emulador de terminal?" Sí, pero sus resultados se mezclarían y sería difícil ejecutar programas de maldiciones.
Radovan Garabík
4

Muchas de las otras preguntas parecen responder por qué se introdujo la función.

Aún así, la pregunta real es:

¿Por qué Unix / Linux proporciona múltiples emuladores de terminal?

"hace", no "hizo".

Entonces, centrándonos en la hora actual, aquí hay algunas razones actuales:

  • Pueden ser útiles. A veces, en lugar de crear una nueva ventana que cubra otras ventanas en el escritorio, simplemente puedo pasar a otra terminal. Entonces, puedo volver a cambiar, por lo que el escritorio es el primer plano. En ocasiones (normalmente cuando hay varias ventanas abiertas), esto puede ser más conveniente que colocar una ventana de terminal en el fondo y luego, más tarde, intentar hacer que esa misma ventana aparezca en primer plano (en lugar de seleccionar accidentalmente una ventana diferente del terminal ventanas que están en el escritorio gráfico).

    Por ejemplo, puedo recordar que Alt-Ctrl-F2 es el editor de texto que mira un archivo de texto (por ejemplo, documentación), y Alt-Ctrl-F3 se usa para mirar rápidamente otro archivo (por ejemplo, un archivo de configuración), y Alt-Ctrl-F4 se usa para un símbolo del sistema, mientras que el escritorio gráfico se puede dividir entre navegación web, correo electrónico, reproductor de música, etc.
  • Las ventanas de terminal pueden ser útiles para trabajar con la computadora si hay algún tipo de problema con la pantalla gráfica. Para las personas que pueden tener una necesidad actual de usar una computadora (quizás personalizada) que no tenga una tarjeta gráfica de video, esta funcionalidad puede ser esencial. También existe la posibilidad de necesidades futuras (posiblemente con un sistema operativo sucesor / descendiente) que pueden ser adicionales a las necesidades actuales.
    • Estas terminales de texto tienden a usar menos recursos. Por ejemplo, tienden a usar menos memoria en una tarjeta gráfica. Entonces, si una tarjeta gráfica tenía un mal funcionamiento físico que rompía la funcionalidad del 3er y 4to megabyte de memoria de video, eso podría incluso no afectar a alguien que solo usa los terminales de texto clásicos. Los procesos más simples, que usan menos recursos, pueden ser útiles cuando se trabaja en la recuperación.
  • El código ya existe. Por lo tanto, apoyarlos es fácil.
  • La cantidad de recursos para una terminal no utilizada (antes de iniciar sesión) es muy pequeña. Incluso esa pequeña cantidad de memoria puede recuperarse ajustando / etc / ttys
  • El código para admitir múltiples terminales es bastante similar al código para admitir E / S a través de conexiones en serie. Los desarrolladores de sistemas operativos tienden a valorar mucho eso. Con los avances en las máquinas virtuales, el valor de usar conexiones en serie es menos crítico de lo que solía ser. Aún así, algunos desarrolladores de kernel (ya familiarizados con el proceso) pueden querer usar dicho hardware. Las organizaciones que usan hardware antiguo también pueden ver beneficios al no necesitar cambiar el hardware.

En resumen, simplemente no hay muchas razones para no apoyar esto. Hay algunas ventajas que algunas personas aprecian, al menos algunas veces, y no mucho costo.

En realidad, eliminar el soporte para esto puede ser más trabajo que simplemente dejar el soporte allí. Si bien eliminar el soporte probablemente sería simple, si algo falla, entonces identificar y solucionar el problema puede ser un poco difícil. Por lo tanto, la reducción en la cantidad de esfuerzo requerida (para desarrollar la próxima versión de un sistema operativo) es otra razón más para dejar las cosas como están. Eso significa que esta característica es propensa a permanecer disponible.

TOOGAM
fuente
Tener una perspectiva histórica a menudo es útil. Dices que quieres concentrarte en el presente, pero finalmente concluyes "Una de las razones por las que Unix / Linux actualmente proporciona múltiples emuladores de terminal es porque los proporcionó en primer lugar ..."
jlliagre
Si. Lo hizo. Si no fuera así, podría no serlo hoy. Pero como lo hizo Unix, esa sigue siendo una razón convincente por la que lo hace. De ninguna manera quise minimizar la utilidad de estar familiarizado con el pasado. Mi tendencia natural sería centrarme en por qué se agregó (y mi primer borrador o dos lo tenían en más detalle), pero mi razón principal para tratar de concentrarme en el presente es que esa es la pregunta que se hizo. Además, otras respuestas mencionaron el pasado, y traté de dar una respuesta útil agregando lo que se ha dicho, en lugar de simplemente duplicar lo que ya se dijo en otra parte de la página.
TOOGAM
3

Lo primero que ha preguntado es una característica de un núcleo llamado Linux. No de Unix en general, y no de Gnu.

En cuanto a por qué, tendría que preguntar a los autores. Sin embargo, supongo que permite que un administrador de un dispositivo no conectado en red (aquí incluyo un RS232 como tipo de red), inicie sesión y realice algunos trabajos de administración, sin desconectar a otro usuario.

ctrl-alt-delor
fuente
Sí, los VT de los núcleos están configurados por código de usuario, y sí, hay algunos otros Unix que los tienen. Sin embargo, no es una cosa general de Unix.
ctrl-alt-delor