Byobu vs. GNU Screen vs. tmux - Nützlichkeit und Übertragbarkeit von Fähigkeiten [geschlossen]


95

Bisher habe ich Konsole verwendet , um mehrere Shell-Sitzungen zu verwalten, aber ich habe nicht Byobu , GNU Screen und tmux ausprobiert , die eine bessere Unterstützung für mehrere Shells bieten. Sie alle haben eine Hauptfunktion gemeinsam: Sie können die aktuelle Sitzung trennen und später wieder mit der alten Sitzung verbinden.

Um mir bei der Auswahl eines Tools zu helfen, möchte ich wissen: Wie unterscheiden sie sich in den folgenden Punkten?

  1. Merkmale (offensichtlich)
  2. Projektreife. Ich möchte kein Werkzeug lernen, das sich zu sehr verändert. Verbesserungen sind willkommen, aber ich mag keine Überraschungen wie das Verschwinden von Funktionen.
  3. Lernkurve
  4. Verfügbarkeit in verschiedenen Plattformen. Wenn ich ein Tool lerne, möchte ich es auf einem FreeBSD-Server, einem SuSE-Desktop oder Ubuntu verwenden können.
  5. Kompatibilität mit anderen interaktiven Shell-Programmen. Kann ich vimund emacs -nw(Nicht-Fenstermodus oder Textmodus) immer noch so verwenden, wie ich es gewohnt bin? Widersprechen die Tastaturkürzel denen anderer Tools?

Ich habe gerade alle ausprobiert und Byobu sieht aus wie eine Art Frontend für GNU Screen und tmux. Warum hat dann jemand Byobu erstellt, anstatt zum GNU-Bildschirmprojekt beizutragen und neue Funktionen hinzuzufügen? Warum ist Byobu kein erweiterter Schnittstellenmodus in GNU Screen? Kann ich dieses Wissen auf die Verwendung von GNU Screen ohne Byobu übertragen, wenn ich Byobu als mein tägliches Tool mit GNU Screen als Backend verwende, wenn eine bestimmte Maschine nur über GNU Screen verfügt?


1
Meine eigene Frage kommentieren. Nachdem ich gepostet habe, habe ich gesehen, wie oft jedes Tag in StackExchange verwendet wurde: gnu-screen: 199 mal tmux: 125 mal byobu: 18 mal Bedeutet das, dass byobu immer noch nicht beliebt ist? Oder dass byobu so intuitiv ist, dass niemand eine Frage dazu hat, wie man es benutzt?
Keitai

1
Da byobues sich nur um eine Abzweigung screenmit zusätzlichen Funktionen handelt, gnu-screengilt das Tag.
Grawity

2
Gemäß der Dokumentation ( manpages.ubuntu.com/manpages/precise/en/man1/byobu.1.html ) ist die Standardkonfiguration von Byobu die Verwendung von tmux als Standard-Backend. Wenn Byobu ein Fork of Gnu Screen ist, bedeutet das, dass TMUX besser ist als Gnu Screen?
Keitai

1
Interessant, ich wusste nicht, dass es jetzt tmux unterstützt, obwohl es nur ein Wrapper-Skript bleibt - anscheinend nicht einmal ein Fork. Aber ja, tmux ist in gewisser Hinsicht besser als Screen (zumindest deren FAQ behauptet dies).
Grawity

22
Byobu ist überhaupt nichts! Es ist eine Ebene über Screen und Tmux, ähnlich wie Gnome / KDE eine Ebene über Xorg.
Dustin Kirkland

Antworten:


32

Lesen Sie für Tmux vs GNU Screen

und einige andere Vergleichsinkarnationen, die auf Blogs und so weiter zu finden sind.

Einige allgemeine Begriffe, die oft wiederholt werden:

  • Tmux ist neuer. Dies bedeutet, dass es ein bisschen ausgefallener ist (einfache vertikale Aufteilung, schöne grüne Linien) und ein bisschen weniger gut auf zB Kompatibilität getestet wurde (in vernachlässigbarem Umfang, so die Befürworter).
  • Tmux ist ressourcenschonender.
  • GNU Screen ist überall zu finden und wird höchstwahrscheinlich noch häufiger verwendet.

Abgesehen davon kann man bestimmte Funktionen für die eine oder andere Alternative betrachten, und persönliche Vorlieben werden die Diskussion dominieren. Ich persönlich habe GNU Screen oft benutzt - jetzt benutze ich Tmux.

Ich habe nicht gefunden, dass Byobu irgendwelche "Killer-Features" für mich hat. Es bietet eine Abstraktion, bei der meines Erachtens keine für meine Anwendungsfälle benötigt wird.


Eine andere Sichtweise ist, dass Byobu entweder GNU Screen oder Tmux als Backend verwenden kann, was zeigt, dass die Unterschiede zu einem Benutzer-POV größtenteils oberflächlich sind.


268

Gute Frage! Für das, was es wert ist, bin ich der Autor und Betreuer von Byobu .

Byobu ist eine Konfigurationsebene, die ursprünglich auf GNU Screen geschrieben wurde, jetzt aber auch auf Tmux funktioniert .

Ich habe bereits im Dezember 2008 angefangen, Byobu zu schreiben , als ich eine Reihe von Benutzern von Screen und Ubuntu Server beim Googleplex traf und feststellte, dass wir alle unsere eigenen ordentlichen, spaßigen und nützlichen Hacks in unseren ~/.screenrcKonfigurationen beibehalten haben . Und wir mussten diese manuell zwischen den Dutzenden oder Hunderten von Servern verschieben, die wir verwendeten. Wir begannen, Tipps und Tricks zu tauschen, und ich begann, diese in dem ursprünglichen GPLv3- Projekt namens "Bildschirmprofile" zu sammeln . Ungefähr 6 Monate später hatte sich eine ganze Community um " Bildschirmprofile " entwickelt und das Projekt wurde viel mehr als nur Bildschirmhacks - wir hatten Konfigurationsdienstprogramme, Live-Status-Plugins und Tastenkombinationen. Also haben wir das Projekt umbenannt "Byobu" ist ein japanisches Wort für diese eleganten, zusammenklappbaren "Bildschirme" und bietet den zusätzlichen Vorteil, dass Google erfolgreicher nach "Byobu $ FOO" als nach "Screen $ FOO" suchen kann.

Mit Byobu, das jetzt in den meisten Linux-Distributionen ( Ubuntu , Debian , Fedora , Arch ) enthalten ist und auf den meisten Macs / BSDs und anderen UNIX-Betriebssystemen funktioniert, bietet es an jedem beliebigen Terminal das gleiche Erscheinungsbild, bequeme Tastenkombinationen und dynamische Systemstatusinformationen müssen zugreifen.

Warum nicht einen Beitrag zum GNU Screen-Projekt leisten? Ein paar Gründe ... All das, was Byobu funktioniert, sowie Konfigurationsoptionen. Nichts davon muss in der Basis der Bildschirmquelle enthalten sein, um funktionsfähig zu sein. Einige Dinge könnten besser funktionieren oder eine bessere Leistung erbringen, wenn Screen sie standardmäßig einbezieht, aber viele der Änderungen sind sehr "eigenwillig", was normalerweise schwierig oder unmöglich ist, zu einem 25 Jahre alten vorgelagerten Projekt beizutragen . Außerdem bewegt sich das GNU Screen-Projekt, wenn überhaupt, sehr langsam. Es ist mehr als 25 Jahre alt und hat seit August 2008 keine offizielle Veröffentlichung mehr . Jede Distribution enthält riesige Stapel von Patches, damit Ihr / usr / bin / screen funktioniert und sicher ist. Beispielsweise führen Ubuntu und Debian derzeit 19.000 Codezeilen in ~ 48Flecken .

Ich habe vor ungefähr 2 Jahren von Tmux erfahren und mich wirklich in den Quellcode, das Design, die Benutzeroberfläche und die aktive Community verliebt! Ich hatte es viel einfacher, Korrekturen an Upstream-Tmux beizutragen und Themen auf der Mailing-Liste zu diskutieren. Und als Byobu-Benutzer, der es überall benutzt, wollte ich, dass meine Tmux-Sitzungen so aussehen und sich so anfühlen, wie ich es in über 4 Jahren Byobu erlebt habe. Also habe ich den gesamten Byobu-Code portiert , um mit Tmux genauso gut zu funktionieren wie mit dem Backend als Screen. Ab der Byobu 5.0-Version ist Tmux nun das Standard-Backend, wobei Screen in einem Legacy-Modus weiterhin unterstützt wird. Byobu nutzt jetzt viele der modernen Funktionen von Tmux over Screen, einschließlich der erheblich verbesserten 256-Farben-Unterstützung, UTF8-Zeichen und der horizontalen / vertikalen Fensteraufteilung.

Wenn Sie mit den Standardeinstellungen in Screen oder Tmux zufrieden sind oder Ihre eigenen Konfigurationsdateien von Grund auf neu schreiben möchten, sind Screen und Tmux auf jeden Fall fantastische Dienstprogramme, die unser Leben über viele Jahre hinweg effizienter gemacht haben. Wenn Sie an einer Reihe von Konfigurationen interessiert sind, die die Funktionen von Screen und Tmux direkt erweitern und erweitern, sehen Sie sich Byobu an!

Prost, Dustin


16
Gute Erklärung. Erstaunlich, dass der Bildschirm so stark gepatcht ist - braucht er einen neuen Betreuer oder so? Und byobu ist großartig - danke.
Nealmcb

10
Ich wünschte, ich könnte zweimal abstimmen. Ich benutze Byobu seit Jahren und habe erst vor kurzem von der Komplexität erfahren, vor der es mich die ganze Zeit versteckt hat.
Jamie Cook

2
Ich benutze immer CTRL+` as escape. With screen` und tmuxdas funktioniert wie ein Zauber, aber nicht mit byobu(Debian 7.1 Wheezy).
Tino

1
Jetzt, wo screenes einen neuen Betreuer gibt und die Entwicklung anscheinend Fahrt aufgenommen hat, ändern sich die Dinge?
Muru

Könnten diese Standardeinstellungen es nicht zum jüngeren tmux-Projekt machen? Der Antwort fehlt anscheinend ein Absatz "Warum nicht einen Beitrag zum tmux-Projekt leisten?" xkcd.com/927
user2707671

12

Ausgehend von einem tatsächlichen Anwendungsfall besteht der größte Unterschied zwischen screenund tmuxdarin, wie sie mit geteilten Fenstern umgehen.

Ein Fenster in screenist ein einzelnes Pseudoterminal. Wenn Sie an eine screenSitzung angehängt sind , können Sie Ihr Terminal in mehrere Regionen aufteilen, von denen jede ein screenFenster anzeigen kann . Mehrere Regionen können dasselbe Fenster anzeigen. Die Aufteilungen sind nicht Teil der Sitzung. Wenn Sie sich lösen, sind Ihre Brüche verschwunden.

Ein Fenster tmuxbesteht aus einem oder mehreren Pseudoterminals, einem pro Fenster. Dies bedeutet, dass die Fenster weiterhin angezeigt werden, wenn Sie sie später trennen und wieder anbringen. Dies bedeutet auch, dass Sie immer nur ein Fenster gleichzeitig anzeigen können tmuxund dass Fenster nicht von mehreren Fenstern gemeinsam genutzt werden können. tmuxErmöglicht es jedoch , ein Fenster für mehrere Sitzungen freizugeben.

Ich bevorzuge das von verwendete Modell tmux, aber ich könnte nicht behaupten, dass es besser ist als das von verwendete Modell screen.


3
Das Argument pro tmuxist die Deutsche Bahn . Fahren Sie mit einem Schnellzug, versuchen Sie, über ssheine mobile Verbindung zu arbeiten, und Sie werden schnell feststellen, dass das tmuxModell weit überlegen ist, da Sie nach einer der häufigen Verbindungsunterbrechungen nach dem erneuten Anmelden nicht alle Fenster auf Ihrem Jumphost neu anordnen müssen. SCNR
Tino

3
Bei häufigen Verbindungsabbrüchen schlage ich vor, einen Blick auf mosh zu werfen , der sich anders alsssh
Ciprian Tomoiagă,

4

Der Dealbreaker für tmux war für mich die Implementierung von Session Sharing.

Wenn Sie in GNU Screen einem anderen Benutzer erlauben, eine Verbindung zu einer Sitzung herzustellen, oder Ihre Sitzung einfach mit mehr als einem Terminal verbunden haben, können diese unabhängig voneinander arbeiten (das Umschalten von Bildschirmen in einer Sitzung A von Terminal B bewirkt nicht, dass Terminal A auch Bildschirme einschaltet Sitzung A).

Das obige ist bei tmux (noch?) Nicht der Fall, oder ich habe noch keine Möglichkeit gefunden, das Verhalten zu ändern.

Wenn jemand eine Möglichkeit kennt, dieses Verhalten in tmux zu ändern, oder wenn tmux aktualisiert, um dieses Verhalten zu ändern, oder die Option gibt, dieses Verhalten jetzt zu ändern, hinterlassen Sie bitte einen Kommentar.


6
tmuxhat eine Vorstellung von "verknüpften" Sitzungen mit new-session -t shared. Fenster aus "freigegeben" werden in der neuen Sitzung angezeigt, neue Fenster in einem werden in dem anderen angezeigt und das Schließen eines Fensters in einem schließt es in dem anderen. Welches Fenster jedoch jeder Client sieht, hängt von der tatsächlichen Sitzung ab, die er anfügt.
Chepner
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.