Was ist der Unterschied zwischen Multiplexing mit tmux / screen und dem Öffnen von Registerkarten in einem Terminalemulator?

619
abdelmak

Ich versuche, diese beiden Methoden zum Ausführen mehrerer Shells / Prozesse zu vergleichen, indem der Speicher und die CPU-Auslastung über htop gemessen werden.

Kann jemand die Unterschiede erklären, wie jede Methode funktioniert oder ob es welche gibt?

BEARBEITEN:

Soweit ich weiß, sind tmux / screen und andere Multiplexer virtuelle Sitzungen, dh mehrere virtuelle Sitzungen innerhalb der ursprünglichen Sitzung. Dies steht im Gegensatz zum Öffnen neuer Registerkarten im Terminal, die tatsächlich neue Sitzungen erstellen.

Ich habe immer noch nicht festgestellt, ob eine Methode Vorteile gegenüber der anderen hat. noch die zugrunde liegenden Mechanismen.

Gerne können Sie in der Zwischenzeit detailliertes Wissen zu diesem Thema einbringen!

Die folgenden Links haben mir geholfen, den grundlegenden Unterschied zu verstehen:

Welche Beziehung besteht zwischen Multiplexer und Terminal?

Welche Vorteile bietet der Terminalmultiplexer?

1

2 Antworten auf die Frage

1
grawity

Beide Arten von Software verwenden tatsächlich die gleiche Art von Pseudo-Systemen und beide initialisieren die Umgebung auf ähnliche Weise.

Der Hauptunterschied besteht darin, dass Multiplexer wie ein 'Proxy' arbeiten - sie fungieren als Terminalemulatoren für das Programm innerhalb, aber als reguläre Programme (Clients) für den Hauptterminalemulator.

Dies bedeutet, dass jedes Zeichen oder jeder Steuercode doppelt interpretiert wird, wenn er durch die Ebenen geht. Tmux und gnome-terminal behalten ihren eigenen Zustand bei; Sie haben ihre eigene Vorstellung davon, wie der Bildschirmpuffer aussehen soll (und es kommt manchmal vor, dass er nicht mehr synchron ist).

Dies bedeutet auch ungefähr das Doppelte des RAM-Bedarfs für die Haupt- und Alternativpuffer. Scrollback kann auch dupliziert werden, wenn auch selten (das äußere Terminal aktualisiert Scrollback nicht, da es von tmux auf den "alternativen Puffer" umgestellt wurde).

Die Duplizierung von Zeichen und Steuercodes ist sinnvoll, aber die doppelte RAM-Anforderung widerspricht auch der Behauptung von @ Austin, dass es keinen Unterschied in der Nutzung der Systemressourcen gibt. abdelmak vor 5 Jahren 0
Normalerweise gibt es keinen _noticeable_-Unterschied, es sei denn, Sie versuchen, ein 10000x10000-Zell-Terminal zu verwenden. Trotzdem behält der Multiplexer seinen eigenen Puffer (so können Sie ihn trennen und später wieder anbringen und immer noch dieselbe Ansicht erhalten), und dieser Puffer muss irgendwo gespeichert werden, was RAM-Speicherplatz beansprucht. Die gesamte Verarbeitung muss auch CPU-Zeit beanspruchen. grawity vor 5 Jahren 0
@grawity Und wie oft glaubst du, dass es wirklich wichtig ist? Die typische Größe eines Terminalfensters bei 1920 x 1080 mit 12-Punkt-Schrift entspricht etwa 30 kb Platz für einen Vollbildschirm (vorausgesetzt, jede Zelle wird als gepacktes Bitfeld in einer 32-Bit-Ganzzahl gespeichert, was in den meisten Fällen anzunehmen ist). Die CPU-Zeit für die Verarbeitung von Aktualisierungen ist für die meisten Terminalemulatoren in der Größenordnung von höchstens Mikrosekunden (und noch weniger für Multiplexer, da sie nicht die GUI-bezogenen Aufrufe zum Aktualisieren von Dingen durchführen müssen). Austin Hemmelgarn vor 5 Jahren 0
1
Austin Hemmelgarn

Der größte Unterschied besteht darin, dass Sie von anderen Terminals (ob Terminalemulatoren, VTs, SSH-Sessions oder sogar echten seriellen Terminals) wieder auf Ihrem Bildschirm oder bei den tmux-Sitzungen arbeiten können, dies jedoch nicht mit Registerkarten in einem Terminalemulator. Dies mag einfach klingen, bringt jedoch einen der größten Vorteile bei der Verwendung von Screen oder Tmux mit sich, insbesondere wenn Sie mit einem Remote-System zu tun haben: Es kann über die Dauer Ihrer aktuellen Anmeldesitzung hinausbleiben, was für ein System von großem Nutzen ist Anzahl der Gründe.

Es gibt jedoch einige andere Unterschiede:

  • Wenn Sie screen oder tmux verwenden, haben Sie immer genau einen zusätzlichen Prozess pro Bildschirm oder tmux-Sitzung (jedoch nicht pro Fenster / Registerkarte). Abhängig vom verwendeten Terminal-Emulator haben Sie möglicherweise keine zusätzlichen Prozesse oder Sie haben mehr als einen zusätzlichen.
  • Die Verwendung von screen oder tmux bietet Ihnen einige zusätzliche Funktionen, die die meisten Terminalemulatoren nicht bieten, wie z. B. geteilte Fenster und die Möglichkeit, einen BREAK in der Anwendung auf der Registerkarte zu senden.
  • Die zum Wechseln von Fenstern / Registerkarten verwendeten Hotkeys unterscheiden sich (obwohl beide im Allgemeinen ziemlich einfach umkonfiguriert werden können).
  • Sie können screen und tmux von jeder Terminalsitzung aus verwenden, aber nur Registerkarten, wenn Sie einen Terminalemulator verwenden.
  • Bildschirm (und möglicherweise tmux) bietet eine Klemmenverriegelungsfunktion. Im Wesentlichen entspricht dies der Bildschirmsperre, die auf den meisten Desktops angezeigt wird.

In beiden Fällen hat jedes Fenster / jede Registerkarte letztlich ein zugehöriges Pseudoterminal (normalerweise als PTY abgekürzt). Der wirkliche Unterschied hier ist, was wirklich kontrolliert, zu welchem ​​Pseudoterminal Ihre Eingabe geht und welche Ausgabe angezeigt wird. Die genaue Vorgehensweise, wie ein Pseudoterminal arbeitet, ist etwas kompliziert, aber an mehreren Stellen im Internet gut dokumentiert. Die Grundidee besteht darin, dass ein Prozess die Möglichkeit bietet, sich als Hardware-Terminal auszugeben, sodass er einen anderen Prozess ausführen kann, der erwartet, dass er mit einem Terminal kommuniziert.

Keine der beiden Optionen ist in Bezug auf die Systemressourcen wirklich viel effizienter, und die effizientere Lösung in Bezug auf die UX hängt weitgehend vom Benutzer selbst ab (z. B. ist der Bildschirm für mich effizienter, da ich alle daran gewöhnt bin Standard-Tastenzuordnungen).

Vielen Dank! Das war sehr hilfreich. Wenn ich es richtig verstanden habe, sind Multiplexer daher besonders nützlich für die Verwendung von Remote-Anmeldungen, weil sie Ihre Sitzung im Falle eines Timeouts oder einer Verbindungsunterbrechung "speichern". abdelmak vor 5 Jahren 0
@abdelmak Ja, aber darüber hinaus gibt es auch einige praktische Anwendungen. Eine große Sache ist das Migrieren von Sitzungen (z. B. mit einer lokalen Sitzung beginnen und dann später zu einer Remote-Sitzung wechseln oder umgekehrt). Austin Hemmelgarn vor 5 Jahren 0