tmux vs. GNU Screen [geschlossen]


194

Durchsuchen von Fragen, die ich zu tmux gefunden habe (normalerweise habe ich GNU Screen verwendet). Meine Frage ist, was für Vor- und Nachteile von jedem von ihnen sind. Vor allem konnte ich nicht viel über tmux erfahren.



5
Wie Sie den guten Antworten unten entnehmen können, basieren sie nicht auf Meinungen.
Reinierpost

@reinierpost - es scheint, dass viele Leute hier zu schnell sind, um Fragen als "hauptsächlich meinungsbasiert" zu schließen. Wir können jedoch für eine Wiedereröffnung stimmen.
MountainX

Obwohl es sich bei dieser Frage um eine Vergleichsfrage handelt, sind die Argumente für und gegen meines Erachtens ausreichend objektiv und daher ist der Grund für die Meinungsbildung hier nicht in Ordnung. Sie können die verknüpfte SU-Frage überprüfen, die Antworten sind in Ordnung.
peterh

Antworten:


122

Von ihrer Website :

  • Wie unterscheidet sich tmux vom GNU-Bildschirm? Was bietet es sonst noch?

tmux bietet gegenüber dem Bildschirm mehrere Vorteile:

  • ein klar definiertes Client-Server-Modell: Fenster sind unabhängige Einheiten, die gleichzeitig an mehrere Sitzungen angehängt und von mehreren Clients (Terminals) aus angezeigt sowie zwischen Sitzungen innerhalb desselben tmux-Servers frei verschoben werden können;
  • eine konsistente, gut dokumentierte Befehlsschnittstelle mit derselben Syntax, unabhängig davon, ob sie interaktiv, als Schlüsselbindung oder über die Shell verwendet wird;
  • leicht aus der Shell skriptfähig;
  • mehrere Pastenpuffer;
  • Wahl der Tastaturbelegung für vi oder emacs;
  • eine Option zum Begrenzen der Fenstergröße;
  • eine benutzerfreundlichere Statuszeilensyntax mit der Möglichkeit, die erste Ausgabezeile eines bestimmten Befehls anzuzeigen;
  • Eine saubere, moderne, einfach zu erweiterende, BSD-lizenzierte Codebasis.

Es gibt noch ein paar Features, die der tmux-Bildschirm weglässt:

  • eingebaute serielle und Telnet-Unterstützung; Dies ist aufgedunsen und es ist unwahrscheinlich, dass es zu tmux hinzugefügt wird.
  • Erweiterte Plattformunterstützung, z. B. für IRIX und HP-UX sowie für ungerade Terminals.

4
verdammt ... jetzt möchte ich tmux ausprobieren ... nur weil der Bildschirm wegen fehlender vi-Tastenkombinationen bei mir nicht funktioniert hat.
Xenoterracide

1
Bedeuten vi oder emacs Tastenkombinationen nur, dass tmux mit zwei praktischen Standardeinstellungen geliefert wird? Es ist möglich, die Tastenkombinationen des Bildschirms mit seiner rc-Datei vollständig neu zu konfigurieren.
jw013

Sie können beliebige Tastenkombinationen definieren. Siehe: openbsd.org/cgi-bin/…
nisc

Wenn sie über die Implementierung sprechen, sollten sie endlich den dummen Fehler mit <C-Left>in vimin beheben tmux.
yo

45

Ein Unterschied besteht darin, wie die beiden sich verhalten, wenn mehrere Terminals an eine Sitzung angeschlossen sind.

Mit screen ist die Ansicht jedes angeschlossenen Terminals unabhängig von den anderen. Bei tmux sehen alle angeschlossenen Terminals dasselbe.

Angenommen, Sie haben zwei Terminals an eine einzige tmux-Sitzung angeschlossen. Wenn Sie ^B1 in ein Terminal eingeben, wechselt das andere Terminal ebenfalls zu Fenster 1.

Wenn an eine Bildschirmsitzung zwei Terminals angeschlossen sind und Sie ^A1 in eines eingeben, hat dies keine Auswirkungen auf das andere Terminal.

Dies basiert auf meinen Erfahrungen mit tmux 1.2; Ich sehe, 1.3 ist raus, aber ich habe im Changelog nichts über dieses Verhalten bemerkt.

Wenn Sie das Bildschirmverhalten mögen und es in tmux wollen:

Wenn Ihre ursprüngliche tmux-Sitzung aufgerufen wird 0(Standardeinstellung), können Sie tmux new-session -t 0eine neue unabhängige Sitzung starten, die mit demselben Satz von Fenstern verbunden ist und dann eine eigene Ansicht haben kann.


1
Dies ist eine interessante Unterscheidung. Ich bin mir sicher, dass jede davon Vorteile für verschiedene Anwendungsfälle hat. (Vorteil von tmux: zwei Personen, die an dieselbe tmux - Sitzung angeschlossen sind, z. B. für die Remote - Pair - Programmierung, sehen immer dasselbe
Zum Beispiel

10
Wenn Ihre ursprüngliche tmux-Sitzung "0" heißt (die Standardeinstellung), können Sie mit "tmux new-session -t 0" eine neue unabhängige Sitzung starten, die mit demselben Satz von Fenstern verbunden ist und dann eine eigene Sitzung haben kann Aussicht. Ich bin mir ziemlich sicher, dass dies in 1.2 / 1.3 funktioniert hat, aber ich kann mich nicht ohne weiteres erinnern.
Cos

@cos das ist genau der tipp den ich gesucht habe. Ich danke dir sehr. Ich wünschte, ich könnte dich zweimal abstimmen :) Ich fange jetzt jedes Mal wieder mit 'tmux new-session -t 0' an.
Jrwren

@Cos Dies wurde hinzugefügt "FROM 1.0 TO 1.1, 05 November 2009". @jrwren Der Befehl kann kurzgeschlossen werden tmux new -t 0.
user285259

24

tmux ist im Vergleich zum GNU-Bildschirm ziemlich neu. Vor- / Nachteile sind eine schwierige Frage, da beide Programme ungefähr dasselbe Problem lösen. tmux ist BSD-lizensiert, während screen GNU GPL ist. Dies ist für manche Menschen von Bedeutung.

screen ist momentan (unter Linux) stärker vertreten, das heißt, es ist wahrscheinlicher, dass Sie es auf einer bestimmten Linux-Box finden als auf tmux. tmux ist jedoch stärker auf OpenBSD vertreten, da es im Rahmen der Basisinstallation enthalten ist.

Beide Programme ermöglichen es Ihnen, dasselbe zu tun, obwohl der Zustand der Dinge etwas komplexer ist. Das Umschalten zwischen den beiden ist nicht allzu kompliziert, da viele Bildschirmfunktionen auch in tmux Eingang gefunden haben. Wenn Sie jedoch einer der beiden Poweruser sind, werden Sie wahrscheinlich einige Frustrationen beim Umschalten auf den anderen feststellen.

Wie bei jedem Programm hängt es wirklich von Ihren Bedürfnissen ab und mit welchen Sie sich wohler fühlen. Probieren Sie beide aus und sehen Sie, mit wem Sie gut spielen.

Weitere Informationen zu tmux finden Sie unter https://tmux.github.io/


17

Der größte Unterschied bei meiner Verwendung war, dass Sie in Gnu Screen Frames nur horizontal teilen können, während Sie in Tmux sowohl horizontal als auch vertikal teilen können. Dies ist eine Art sich bewegendes Ziel, obwohl ich hier sage, dass die vertikale Teilung ihren Weg in den Bildschirm findet .

Abgesehen davon geht es um flache Dinge.


10
Sie können den Bildschirm auch vertikal teilen. mmm ... zumindest funktioniert es in der Standard Ubuntu 10.10 Bildschirminstallation.
Stann

4
@andre es gibt einen langjährigen Patch für vertikales Teilen des Bildschirms ... der nie in den Upstream integriert wurde ... aber ich bin sicher, dass viele Distributionen ihn angewendet haben.
Xenoterracide

17

Ich dachte, ich würde nur den byobuWrapper erwähnen, der für den Bildschirm verfügbar ist und ihn sofort viel besser macht. Ich weiß nicht, ob so etwas für tmux verfügbar ist, habe aber byobufür mein .screenrc nur eine Handvoll Zeilen erstellt. Lesen Sie diesen kurzen Artikel über Byobu und Screenshots. Die Projektseite für byobu beschreibt den Namen eines japanischen Begriffs für dekorative, mehrteilige Trennwände, die als Raumteiler dienen. Außerdem schadet es Ihren Bildschirmeinstellungen nicht, wenn Sie es nur ausführen, sodass Sie es sicher ausprobieren können. Sobald Sie die Sitzung mit gestartet haben byobu, können Sie eine freie Verbindung mit herstellen, screenohne die von vorgenommenen Anpassungen zu verlieren byobu(verwenden Sie sie also nur für den ersten Aufruf). Die zwei Hauptvorteile sind:

  • Startet den Bildschirm mit einigen Statusleisten mit nützlichen Informationen
  • Bietet viele Tastenkombinationen für einen einfacheren Zugriff auf die Bildschirmfunktionen

Ich benutze den Tastaturbelegungsteil nicht, finde aber die Statusleisten auf jeden Fall nützlich.

Auch finden Sie möglicherweise Bildschirm Vs tmux Link nützlich. Ich denke, das meiste davon wird bereits in den vorhandenen Antworten erwähnt.


Ihre Antwort wäre nützlicher, wenn Sie die Funktionen von zusammenfassen würden byobu, wie diese Antworten mit ihrer Liste von Funktionen.
Gilles

OK, ich habe weitere Informationen zu hinzugefügt byobu, aber es ist so einfach wie das Ausführen des Befehls und das Finden für sich selbst (es ist menügesteuert), da es Ihre vorhandenen Bildschirmeinstellungen nicht durcheinander bringt. Und ich habe meine Antwort zu einem Community-Wiki gemacht. Sie können es also jederzeit bearbeiten.
Haridsv

1
byobu scheint eigentlich auch tmux zu unterstützen, zumindest in neueren versionen.
Darael

12

Drench wirft einen interessanten Punkt auf: Das Standardverhalten, zweimal eine Verbindung zu derselben Sitzung herzustellen, ist in tmux unterschiedlich. Wenn Sie jedoch zweimal eine Verbindung herstellen möchten und eine unabhängige Ansicht der Fenster in dieser Sitzung haben möchten, starten Sie tmux mit

tmux new-session -t <session name>

Dadurch wird eine neue Sitzung für Sie erstellt und die Fenster aus der bereits vorhandenen Sitzung angehängt. Wenn Sie Ihre erste Sitzung nicht benannt haben, können Sie eine mit "Sitzung umbenennen" hinzufügen.


12

Ein großer Nachteil screenist, dass es nicht aktiv entwickelt wird. Die Bugseiten enthalten fast 200 nicht zugewiesene Elemente, die über einen Zeitraum von 5 Jahren zurückliegen.

tmux hat auch einige offene Fragen, aber weit weniger, und wird aktiver unterstützt.


8

tmux ist neuer und verfügt über einige weitere Funktionen.

Ich habe festgestellt, dass eine gute Verwendung von einem guten Setup abhängt.

Ich benutze vi (vim) zum Editieren (Ruby on Rails) und es gibt ein paar Setup-Dinge, die dafür sorgen, dass das gut funktioniert.

Hier ist meine ~ / .tmux.conf-Datei mit vielen hilfreichen Einstellungen:

bind r source-file ~/.tmux.conf \; display "Reloaded!"  # Reload with ctrl-r
set -g prefix C-a         # prefix from ctrl-b to ctrl-a
unbind C-b                # allow ctrl-b for other things
set -sg escape-time 1     # quicker responses
bind C-a send-prefix      # Pass on ctrl-a for other apps
set -g base-index 1        # Numbering of windows
setw -g pane-base-index 1  # Numbering of Panes
bind \ split-window -h    # Split panes horizontal
bind - split-window -v    # Split panes vertically
bind h select-pane -L     # Switch to Pane Left
bind j select-pane -D     # Switch to Pane Down
bind k select-pane -U     # Switch to Pane Up
bind l select-pane -R     # Switch to Pane Right
bind -r C-h select-window -t :-  # Quick Pane Selection
bind -r C-l select-window -t :+  # Quick Pane Selection
bind -r H resize-pane -L 5       # Switch to Pane Left
bind -r J resize-pane -D 5       # Switch to Pane Down
bind -r K resize-pane -U 5       # Switch to Pane Up
bind -r L resize-pane -R 5       # Switch to Pane Right
setw -g mode-mouse off           # Mouse Off
set -g mouse-select-pane off     # Mouse Off  
set -g mouse-resize-pane off     # Mouse Off
set -g mouse-select-window off   # Mouse Off
setw -g monitor-activity on      # Activity Alerts
set -g visual-activity on
set -g status-fg white           # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan    # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white     # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green      # Pane colors
set -g pane-border-bg black 
set -g pane-active-border-fg white 
set -g pane-active-border-bg yellow
set -g message-fg white          # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40     # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on            # Status Line, right side
set -g status-right "-------"
set -g status-interval 60        # frequency of status line updates
set -g status-justify centre     # center window list
setw -g mode-keys vi             # vi keys to move 
unbind v                         # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up                        # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"

Tmux ist neuer, aber "mehrere weitere Funktionen" implizieren, dass es auch mindestens eine Funktionsparität mit dem Bildschirm aufweist, was nicht der Fall ist. Zusätzlich zu dem, was an anderer Stelle erwähnt wurde, fehlt die Mehrbenutzerunterstützung von tmux stark. Keine Acls oder Status, und im Allgemeinen zeigt es die Neuheit von tmux darin, dass das, was Sie tun können, nicht sehr ausgefeilt ist.
halb

Das ist gut zu wissen. Ich benutze es jetzt seit einem Jahr und habe keine Notwendigkeit für Polnisch bemerkt, obwohl ein wenig ungarisch helfen könnte. Notation also. ok schlechtes Wortspiel;) Hatte vorher noch keinen Bildschirm benutzt, also bemerkte ich die erwähnten Probleme nicht. Es wäre schwieriger, zum Bildschirm zu wechseln und die neuen Funktionen jetzt zu verlieren.
Michael Durrant

8

Ich werde mir erlauben, einen Unterschied hinzuzufügen:

tmux basiert auf ncurses, während screen keine zusätzlichen Elemente zeichnet. Wenn jemand einen Terminal-Emulator verwendet, der das Scrollen unterstützt, wird er zwar mit dem Bildschirm gescrollt, aber nicht mit tmux (zumindest in der Standardkonfiguration). Das Gleiche gilt für die Suche und ähnliche Funktionen.


2
Ich habe noch nie mit dem Bildschirm gescrollt wie ...? : /
souser12345

Ja, mein TE unterstützt das Scrollen und der Bildschirm bricht ab. Ich muss mit dem Bildschirm scrollen. -1 scheint nicht genau zu sein.
Xenoterracide

@xenoterracide: Hmm. Sie haben teilweise recht. Bildschirm auf einigen Distributionen / Systemen (älteres Gentoo) bricht es nicht, während es auf einigen (neuem Ubuntu) funktioniert. Ich habe keine Idee warum.
Maciej Piechotka

möglicherweise ein patch ... bei uns handelt es sich um 5,5-cent-systeme
xenoterracide

6

Ich hatte Probleme damit, dass der Bildschirm utf-8 und 256 Farben unterstützt, aber tmux funktionierte sofort.

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.