Warum bietet UNIX / Linux mehrere Terminals?


8

In den 1970er Jahren hatten wir ein Hardware-Terminal mit CUI-Schnittstelle (Character User Interface) für die Eingabe / Ausgabe.

Jetzt haben wir Terminalemulatoren ( Ctrl+ Alt+ Fn) in der Unix / Linux-Welt.

In Ubuntu OS sehe ich sieben Terminalemulatoren, wobei die GUI den 7. Terminalemulator belegt ( Ctrl+ Alt+ F7).

Zum Beispiel ist dies mein erster Terminalemulator ( Ctrl+ Alt+ F1)

$ tty
/dev/tty0

Warum bietet Unix / Linux mehrere Terminalemulatoren an?


8
Es gab immer eine Nachfrage danach. Ein Programm namens "screen" wurde verwendet, wenn nur ein Terminal verfügbar war.
VPfB

7
@vpfb Bildschirm ist noch verfügbar und ein wesentlicher Bestandteil meines Arbeitsablaufs!
tpg2114

1
Ich denke, Sie fragen hier nicht nach Terminalemulatoren (Programme wie xterm, rxvt usw., die unter X als grafische Anwendungen ausgeführt werden), sondern nach Terminals im Textmodus, auf denen keine Grafiken ausgeführt werden. Die einzige Verwendung, die ich wirklich für diese gefunden habe (und das seit ein paar Jahren nicht mehr), ist das Debuggen von Dingen, wenn X nicht richtig funktioniert. OTOH Ich mache den größten Teil meiner eigentlichen Arbeit in xterm-Fenstern und habe möglicherweise drei bis ein Dutzend oder mehr geöffnet.
Jamesqf

@jamesqf warum rufst du nicht Strg + Alt + F1 als Terminalemulator auf? Da es sich nicht um das Hardware-CUI-Terminal handelt, das wir in den 1970er Jahren hatten
übertauschen Sie den

2
@overexchange: Ich nenne sie nicht so, weil dies nicht die Terminologie ist, die von Leuten verwendet wird, die mit ihnen vertraut sind. Wenn Sie nach "Linux Terminal Emulator" suchen, erhalten Sie viele Ergebnisse zurück, von denen die meisten nichts mit den Textmodus-Konsolen zu tun haben, die Sie mit Ctl-Alt-F [1-7] erhalten.
Jamesqf

Antworten:


25

Warum bietet UNIX / Linux mehrere Terminalemulatoren [auf der Konsole]?

Aus dem gleichen Grund unterstützt Ihr GUI-Terminal-Emulator wahrscheinlich Registerkarten (z. B. GNOME-Terminal). Wenn dies nicht der rxvtFall ist (z. B. ), wird aus dem gleichen Grund beim Starten einer zweiten GUI-Terminal-App-Instanz nicht nur die erste in den Vordergrund gezogen und beendet. Sie werden gezwungen, die erste Instanz zu verwenden.

Ich verwende routinemäßig mindestens 3 Terminalfenster in meiner Arbeit und oft mehr:

  1. Texteditor für die Serverseite des Systems, an dem ich arbeite

  2. Texteditor für die Client-Seite desselben Systems

  3. Befehlsfenster zum Ausführen des Servers

Ich benötige selten ein viertes Terminal zum Ausführen des Client-Programms, da es normalerweise an anderer Stelle ausgeführt wird (Web-App, native GUI-App, mobile App usw.), aber wenn ich einen CLI-Client für meine Server-App entwickeln würde, hätte ich ein separates Terminal auch dafür offen.

In der Vergangenheit, bevor sudoich populär wurde, hielt ich ein rootTerminal die ganze Zeit offen.

Ich verwende Unix / Linux-Boxen heutzutage selten interaktiv an der Konsole ohne GUI, aber ich führe sie oft kopflos aus und greife über SSH darauf zu. Mein SSH-Terminal-Client Ihrer Wahl unterstützt Registerkarten, die wie oben konfiguriert sind.

Bei einem meiner aktuellen Hobbyprojekte verwende ich gelegentlich ein echtes altes Glasterminal , was bedeutet, dass ich nicht mehr mehrere Terminalfenster habe. Daher lerne ich endlich etwas über GNUscreen , ein Programm, für das ich vorher nie viel gebraucht hatte entweder mehrere Konsolenterminals oder mehrere GUI-Terminals. Und was macht screendas? Sie können es unter anderem so konfigurieren, dass Sie mehrere virtuelle Terminals auf einem einzigen Bildschirm haben, genau wie Linux es mit Ctrl- Alt- tut .Fx


10
Das Bessere am Bildschirm - abgesehen davon, dass mehrere Terminals auf einem dummen Konsolenterminal vorhanden sind - ist, dass Sie die Verbindung trennen, sich abmelden, wieder anmelden und erneut eine Verbindung zu Sitzungen und den Prozessen herstellen können oder was auch immer Sie in den Bildschirmbedingungen getan haben mach weiter.
Iwanivan

Wenn Sie das hinzufügen, was @ivanivan gesagt hat, können andere Personen Ihre Bildschirmsitzung sehen und mehrere Personen können sie gleichzeitig anzeigen. Es ist wie die gemeinsame Nutzung von Konsolen-Desktops.
Stanri

Randbemerkung: Es gibt einige Alternativen zur Verfügung unter Verwendung von reinem Bildschirm superuser.com/q/423310
moooeeeep

18

Dies ist eine Funktion, die von fast allen, wenn nicht allen Unix- und Unix-Versionen auf x86-Hardware bereitgestellt wird. Interessanterweise wurden virtuelle Konsolen Anfang der achtziger Jahre von Microsoft Xenix erstmals in einem Unix eingeführt und waren auch in gleichzeitigem CP / M verfügbar.

Diese Funktion wurde später in AT & T SVR4 Unix, Solaris integriert und von BSDs und Linux ausgeliehen.

Warum bietet UNIX / Linux mehrere Terminalemulatoren an?

Bei ihrer Einführung war für die Computer, auf denen diese Unix-Implementierungen ausgeführt werden, keine grafische Umgebung verfügbar. Während ein physisches Terminal, das über RS232-Leitungen mit einem zentralen Unix-Server verbunden war, der Standard war, war das Verbinden mehrerer Terminals mit einem Standard-PC unter Xenix zu viel des Guten, wenn nur ein einzelner Benutzer mehrere interaktive Programme gleichzeitig ausführen wollte. Virtuelle Terminals boten eine elegante und bequeme Lösung für dieses Problem.

Andere Unix-Implementierungen stellten später dieselbe Funktion bereit, um denselben Bedarf zu decken.

Wenn sich grafische Umgebungen, insbesondere X11, ausbreiteten, war es eine signifikante Verbesserung, mehrere Terminalemulatoren gleichzeitig auf demselben Bildschirm sehen zu können. Die Funktion der virtuellen Konsole wurde jedoch im Allgemeinen beibehalten, schon allein deshalb, weil es immer noch praktisch war, zu einer Konsole wechseln zu können, wenn die grafische Umgebung aus irgendeinem Grund eingefroren oder nicht funktionsfähig ist.

Beachten Sie, dass Dienstprogramme wie screenund tmuxviel später als virtuelle Terminals verwendet werden, um dieselbe Funktionalität zu verallgemeinern. Ihr Vorteil ist , können sie verwenden nicht sein nur auf der lokalen physische Konsole, sondern auch auf jeder beliebigen Sitzung, entweder lokal oder entfernt (zB telnet, ssh). Bei Verwendung auf der physischen Konsole sind virtuelle Konsolen immer noch nützlich, da sie in einigen Situationen funktionieren, in denen screen/ tmuxkann nicht helfen, z. B. wenn X11 eingefroren ist oder wenn ein Fenster den Fokus erfasst hat und ihn nicht freigibt.

Container basierten Virtualisierungs wie Solaris Zonen oder Linux LXC auch ein Verfahren zum Behälter Konsole über eine Verbindung zlogin -C zoneund lxc-console -t 0 -n containerverbunden.


4

Ich nehme an, ein guter Grund für zusätzliche Terminalemulatoren ist, dass Sie schnell zu einem Terminalemulator wechseln und alle Probleme in der grafischen Oberfläche beheben können, wenn Sie in Ihrer grafischen Oberfläche etwas falsch machen und es unbrauchbar wird. Dies passiert tatsächlich ziemlich oft, wenn Sie Änderungen an Ihrem Fenstermanager oder anderen Funktionen der grafischen Oberfläche vornehmen. Ich nehme an, es wäre auch nützlich, ein paar weitere Terminals zu haben, jedoch scheint es etwas übertrieben zu sein, 6 über der grafischen Hauptoberfläche zu haben.

Korrigieren Sie mich auch, wenn ich falsch liege, aber ist es nicht möglich, mehrere Befehle als unterschiedliche Benutzer von einem einzigen Terminalemulator aus auszuführen?


"Wenn Sie etwas falsch machen" - das erklärt, warum es eine virtuelle Konsole gibt, nicht warum es mehrere gibt (dh eine andere Frage beantworten). "Ist es nicht möglich, mehrere Befehle als unterschiedliche Benutzer von einem einzigen Terminalemulator aus auszuführen?" - Ja, aber ihre Ausgaben wären verwechselt, und es wäre schwierig, Fluchprogramme auszuführen.
Radovan Garabík

4

Viele der anderen Fragen scheinen zu beantworten, warum die Funktion eingeführt wurde.

Die eigentliche Frage lautet jedoch:

Warum bietet Unix / Linux mehrere Terminalemulatoren an?

"tut", nicht "tat".

Wenn Sie sich also auf die aktuelle Zeit konzentrieren, gibt es einige aktuelle Gründe:

  • Sie können praktisch sein. Anstatt ein neues Fenster zu erstellen, das andere Fenster auf dem Desktop abdeckt, kann ich manchmal einfach zu einem anderen Terminal wechseln. Dann kann ich zurück wechseln, so dass der Desktop im Vordergrund steht. Gelegentlich (normalerweise, wenn mehrere Fenster geöffnet sind) kann dies bequemer sein, als ein Terminalfenster in den Hintergrund zu stellen und später zu versuchen, dasselbe Fenster in den Vordergrund zu rücken (anstatt versehentlich ein anderes des Terminals auszuwählen Fenster, die sich auf dem grafischen Desktop befinden).

    Ich kann mich zum Beispiel daran erinnern, dass Alt-Strg-F2 der Texteditor ist, der eine Textdatei (z. B. Dokumentation) betrachtet, und Alt-Strg-F3 verwendet wird, um schnell eine andere Datei (z. B. eine Konfigurationsdatei) zu betrachten. und Alt-Strg-F4 wird für eine Eingabeaufforderung verwendet, während der grafische Desktop zwischen Webbrowsing, E-Mail, Musik-Player usw. aufgeteilt werden kann.
  • Terminalfenster können für die Arbeit mit dem Computer hilfreich sein, wenn Probleme mit der grafischen Anzeige auftreten. Für Personen, die derzeit möglicherweise einen (möglicherweise angepassten) Computer ohne grafische Grafikkarte benötigen, ist diese Funktionalität möglicherweise von wesentlicher Bedeutung. Es besteht auch die Möglichkeit zukünftiger Anforderungen (möglicherweise mit einem Nachfolge- / Nachkommen-Betriebssystem), die möglicherweise zusätzlich zu den aktuellen Anforderungen vorhanden sind.
    • Diese Textterminals verbrauchen tendenziell weniger Ressourcen. Beispielsweise verbrauchen sie tendenziell weniger Speicher auf einer Grafikkarte. Wenn also eine Grafikkarte eine physische Fehlfunktion hatte, die die Funktionalität des 3. und 4. Megabytes Videospeicher beeinträchtigte, hat dies möglicherweise nicht einmal Auswirkungen auf jemanden, der nur die klassischen Textterminals verwendet. Einfachere Prozesse, die weniger Ressourcen verbrauchen, können hilfreich sein, wenn Sie an der Wiederherstellung arbeiten.
  • Der Code existiert bereits. Daher ist es einfach, sie zu unterstützen.
  • Die Menge an Ressourcen für ein nicht verwendetes Terminal (vor dem Anmelden) ist sehr gering. Selbst diese kleine Speichermenge kann durch Anpassen von / etc / ttys wieder beansprucht werden
  • Der Code zur Unterstützung mehrerer Terminals ähnelt dem Code zur Unterstützung von E / A über serielle Verbindungen. Entwickler von Betriebssystemen schätzten dies sehr. Mit den Fortschritten bei virtuellen Maschinen ist der Wert der Verwendung serieller Verbindungen weniger kritisch als früher. Einige Kernel-Entwickler (die bereits mit dem Prozess vertraut sind) möchten möglicherweise solche Hardware verwenden. Unternehmen, die alte Hardware verwenden, sehen möglicherweise auch den Vorteil, dass sie die Hardware nicht ändern müssen.

Zusammenfassend gibt es nicht viel Grund, dies nicht zu unterstützen. Es gibt einige Vorteile, die manche Menschen zumindest manchmal schätzen und die nicht viel kosten.

Tatsächlich kann das Entfernen der Unterstützung dafür mehr Arbeit bedeuten, als nur die Unterstützung dort zu belassen. Obwohl das Entfernen der Unterstützung wahrscheinlich einfach wäre, kann es schwierig sein, das Problem zu identifizieren und zu beheben, wenn etwas kaputt geht. Die Reduzierung des Aufwandes (für die Entwicklung der nächsten Version eines Betriebssystems) ist ein weiterer Grund, die Dinge einfach so zu lassen, wie sie sind. Das bedeutet, dass diese Funktion weiterhin verfügbar ist.


Eine historische Perspektive zu haben ist oft nützlich. Sie sagen, Sie möchten sich auf die Gegenwart konzentrieren, schließen aber schließlich: "Einer der Gründe, warum Unix / Linux derzeit mehrere Terminalemulatoren bereitstellt, ist, dass sie diese überhaupt erst
bereitgestellt haben

Ja. Es tat es. Wenn nicht, könnte es heute nicht sein. Aber seit Unix bleibt dies ein zwingender Grund dafür. In keiner Weise wollte ich den Nutzen der Vertrautheit mit der Vergangenheit minimieren. Meine natürliche Tendenz wäre es, mich darauf zu konzentrieren, warum es hinzugefügt wurde (und mein erster oder zwei Entwürfe hatten das genauer), aber mein Hauptgrund für den Versuch, mich auf die Gegenwart zu konzentrieren, ist, was die Frage stellte. Außerdem wurde in anderen Antworten die Vergangenheit erwähnt, und ich habe versucht, eine nützliche Antwort zu geben, indem ich das Gesagte hinzufügte, anstatt nur das zu duplizieren, was bereits an anderer Stelle auf der Seite gesagt wurde.
TOOGAM

3

Als erstes haben Sie nach einer Funktion eines Kernels namens Linux gefragt. Nicht von Unix im Allgemeinen und nicht von Gnu.

Warum, müssten Sie die Autoren fragen. Ich vermute jedoch, dass es einem Administrator eines nicht vernetzten Geräts (hier füge ich einen RS232 als Netzwerktyp hinzu) ermöglicht, sich anzumelden und einige Verwaltungsarbeiten auszuführen, ohne einen anderen Benutzer abzumelden.


Ja, die Kernel-VTs werden durch Benutzerlandcode eingerichtet, und ja, es gibt einige andere Unixe, die sie haben. Es ist jedoch keine allgemeine Unix-Sache.
Strg-Alt-Delor
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.