Frage tmux vs. Bildschirm


Ich bin dabei, wieder zu verwenden GNU-Bildschirm, aber ich habe gehört, dass Leute gelegentlich erwähnen tmux als eine bessere Alternative. Bietet es wirklich eine Alternative zu allen Funktionen Bildschirm Angebote wie Aktivitätsüberwachung in verschiedenen Fenstern usw.? Was sind die Vor- und Nachteile von jedem?


213
2018-01-06 15:20


Ursprung


Auch diskutiert bei unix.stackexchange.com/questions/549/tmux-vs-gna-screen - Lloyd Dewolf
Auf dem Bildschirm können Sie Befehle an eine angeschlossene Sitzung senden über screen -S automate_me -X stuff 'command'$(echo -ne '\015') du kannst nicht in tmux. Sehr nützlich, wenn Sie ein ISO / Image einer virtuellen Box testen und einige Befehle schnell aus der Ferne ausführen müssen. Zum Beispiel habe ich es in einem Vim-Befehl, um schnell Skripte in einem Virtualbox-Bildschirm zu debuggen. In früheren Versionen von tmux habe ich festgestellt, dass der Bildschirm mehr Text verarbeitet hat, der schnell vorüberging, während tmux abgestürzt ist. Außerdem benötigt der Bildschirm keine Konfiguration, um UTF-8 usw. zu verarbeiten. - dezza


Antworten:


Einige der (Haupt) Gründe, die ich bevorzuge tmux Über screen:

  • Die Statusleiste ist viel einfacher zu verwenden. Sie können einfach verschiedene Texte / Stile für das aktuelle Fenster, Fenster mit Aktivitäten usw. einrichten und Sie können Dinge links und rechts der Statusleiste platzieren, einschließlich Shell-Befehle, die in einem bestimmten Intervall ausgeführt werden können (Standard 15s).
  • Fast jeder Befehl, den Sie ausführen können tmux kann von einer Shell mit ausgeführt werden tmux command [args]. Dies macht es sehr leicht skriptfähig und macht es auch einfach komplexe Befehle auszuführen.
  • Viel genauere automatische Umbenennung von Fenstern. Während screen setzt den Titel basierend auf dem ersten Wort des Befehls und benötigt eine Shell-Konfiguration, um auch das in einem Shell-Fenster zu tun, tmux verfolgt, welche Prozesse in jedem Fenster tatsächlich ausgeführt werden, und aktualisiert den Titel entsprechend. Auf diese Weise erhalten Sie dynamisches Umbenennen mit jeder Shell- und Zero-Konfiguration. Beispiel: Angenommen, Sie führen Z Shell aus; Der Name des Fensters wäre "zsh". Nehmen wir an, Sie möchten eine Konfigurationsdatei bearbeiten, die Sie eingeben sudo emacs /etc/somefile. Während Sudo nach Ihrem Passwort fragt, lautet der Name des Fensters "sudo", aber sobald Sie das getan haben und sudo startet emacs, der Titel wird "Emacs" sein. Wenn du fertig bist und du gehst emacsDer Titel wird wieder in "zsh" geändert. Dies ist sehr nützlich, um Fenster zu verfolgen, und es kann auch in bestimmten Situationen nützlich sein, zum Beispiel, wenn Sie einen lang andauernden Prozess in einem anderen Fenster haben, der Sie gelegentlich zur Eingabe auffordert dialog; Der Fenstername würde sich zu "dialog" ändern, wenn das passiert wäre, also wüsstest du, dass du zu diesem Fenster wechseln musst und etwas tun musst.
  • Nicer Session Handling (IMHO). Sie können viel mehr mit Sitzungen innerhalb tun tmux selbst. Sie können ganz einfach wechseln, umbenennen usw. und Sie können Fenster zwischen Sitzungen verschieben und freigeben. Es hat auch ein anderes Modell, bei dem jeder Benutzer einen Server hat, der seine Sitzungen steuert und mit dem der Client eine Verbindung herstellt. Der Nachteil davon ist, dass wenn der Server abstürzt, Sie alles verlieren; Ich habe den Server jedoch nie bei mir zum Absturz gebracht.
  • tmux scheint aktiver entwickelt zu sein. Es gibt ziemlich häufig Updates, und Sie können Melden Sie einen Fehlerbericht oder eine Feature-Anfrage gemäß dieser FAQ und bekomme innerhalb weniger Tage eine Antwort.

Das sind nur die wichtigsten Dinge, die einem sofort in den Sinn kommen. Es gibt noch andere kleine Dinge, und ich bin sicher, ich vergesse einige Dinge. Es ist es definitiv wert zu geben tmux ein Versuch, obwohl.


140
2018-01-17 20:36



Die tmux-Entwicklung ist aktiver, weil es so ist Neu. GNU-Bildschirm ist fast 25 Jahre alt, also haben sie die meisten Bugs behoben. - a paid nerd
Der Kommentar eines bezahlten Nerds ist eine sehr wichtige Qualifikation für deinen letzten Punkt. Und der zweite Punkt, wie gesagt, ist nicht wirklich ein Unterschied, wie es auch für den Bildschirm gilt, es sei denn, Sie können genauer sein. - jw013
@a bezahlte Nerd: techrepublic.com/blog/opensource/is-tmux-the-gnu-screen-killer/... - sjas
@ apaidnerd das ist eine sehr reiche Aussage: savannah.gnu.org/bugs/... - Błażej Michalik


(Sitzungen sind Sammlungen von Fenster das kann später gelöst und wieder angebracht werden. Windows kann ein oder mehrere enthalten Scheiben. Zum Beispiel Konfigurationen, Auschecken Hier und Hier.)

tmux

  • Pros
    • Kann Schlüssel an andere Fenster senden, ähnlich wie eine IDE
    • Einfache Tastaturbelegung - mit der richtigen Konfiguration werden Sie sich von Vim oder Screen zu Hause fühlen
    • Vim-ish- und Emacs-ish-Bindungen integriert
    • Gutes Layout-Management, viel wie ein Tiling Window Manager
    • Unicode scheint mit modernen Terminals zu arbeiten
    • Einige Probleme mit dem Terminal behoben TERM=tmux
  • Nachteile
    • Langsam - unsicher, warum, aber Tastenanschläge scheinen lückig Keine Probleme mehr mit Langsamkeit
    • Multiplexing zwingt die gesamte Sitzungsbreite und -höhe zum kleinsten angeschlossenen Terminal
    • Ist unter Mac OS X mehrfach abgestürzt und hat die gesamte Sitzung verloren
    • Fehler bei Linux nach dem Upgrade, bei dem ich die Verbindung zu meiner alten Sitzung nicht wiederherstellen konnte
    • Misses Befehl Tastenanschläge gelegentlich - ^ A ^ [ dauert ein paar Versuche für den Kopiermodus
    • Ein Fenster kann nicht von einem Fenster in ein anderes verschoben werden Mit dem behoben join-pane Befehl
    • Kein Zeilenabwickeln (oder "Reflow" oder "Rewrap") nach Änderung der Terminalbreite (Fenstergrößenänderung)

GNU-Bildschirm

  • Pros
    • Extrem stabil (v1.0 war 1987)
    • Einige Probleme mit dem Terminal behoben TERM=screen
    • Emacs-ish Bindungen eingebaut
    • Einfach zu bewegen und horizontale Scheiben zu steuern
    • Beim Multiplexen kann jedes angeschlossene Terminal die Größe eines Bereichs ändern
  • Nachteile
    • Keine vertikalen Splits ohne Patch (außer auf Ubuntu)
    • Bereichsaufteilungen gehen beim Abnehmen verloren
    • Unicode zum Arbeiten zu bringen erfordert ein wenig Finesse und Entschlossenheit
    • Verrückte Statuszeilenkonfiguration

84
2018-05-04 18:28



Sind die verzögerten Tastenanschläge nur beim Drücken von ESC? tmux hat eine Verzögerung, wo es wartet, um zu sehen, ob du eine xterm-Sequenz oder nur einen einsamen Esc eingibst, und kombiniert mit vim's kann es ziemlich lückig erscheinen. Stellen Sie die Escape-Zeit auf einen niedrigeren Wert wie 50 ein. - Eevee
Es ist auch lustig, sagst du ^A ^[ funktioniert manchmal nicht; Ich habe das gleiche Problem mit dem Bildschirm, aber nie tmux! Und ich glaube, dass Sie Scheiben mit verschieben können join-pane. - Eevee
Ich finde, dass der Bildschirm viel mehr Speicher benötigt, was als Nachteil enthalten sein könnte. - paradroid
Gut, tmux saugt mit vim, in einigen Fällen (Mine nämlich), keine Lösung jemals irgendwo funktioniert, und sogar Menschen, die einige Zeit, die Lösung des Problems von mir zu lösen, waren nicht in der Lage. Es ist nervig, wenn du es nicht benutzen kannst <C-Left> und <C-Right> im vim. - yo'
No vertical splits without patch (except on Ubuntu) Ich glaube nicht, dass das stimmt. Ich benutze seit ein paar Jahren Bildschirm und ich hatte nie Probleme, horizontal oder vertikal auf Debian und Fedora zu teilen. Selbst auf Android mit Termux funktioniert es wie ein Zauber. - Forivin


Ein Profi für den Bildschirm: Er ist auf Linux und Solaris so gut wie sofort verfügbar. Wenn Sie zwischen Plattformen hin- und herwechseln müssen, ist es nett, den mentalen Kontextwechsel nicht zu haben.

Ich bin mir sicher, dass Sie tmux auf jeder Plattform kompilieren können, aber manchmal haben Sie gerade genug Zugriff, um den Bildschirm zu nutzen, aber die tatsächlichen Systemadministratoren wollen nicht wirklich Software hinzufügen, die nicht unbedingt notwendig ist.


9
2018-04-10 18:05





Die Dinge, die ich aus tmux bekomme, die ich im Bildschirm nicht leicht bekomme, sind:

  1. mache vertikale Scheibenaufteilungen
  2. Multiplexing, das wir für die Fern- und lokale Kopplung verwenden.

8
2018-04-19 17:30



Nicht Bildschirm Unterstützung Multiplexing mit der -x Option und acladd? - poolie
Wie bereits erwähnt, hat der Bildschirm vertikale Teilfenster-Splits (erfordert offensichtlich einen Patch ohne Ubuntu). Auch Multiplexing funktioniert gut und hat seit vielen Jahren. - EntangledLoops
vertikale Spaltungen waren in der Hauptlinie screen seit 4.2, im Jahr 2014 veröffentlicht. Viele Distributionen versenden sehr alte Versionen, vor allem Apple. - Neal Fultz
Beide Punkte sind falsch. - Forivin


Ich benutze tmux seit ungefähr 2 Tagen, also wurde meine ungebremste Begeisterung dafür noch nicht gemildert durch das Treffen von nervigen Anwendungsfällen. Während ich die üblichen Wachstumsschwierigkeiten beim Übergang von einem Programm zu einem anderen durchmachte, fielen mir einige positive Merkmale auf, aber das Feature, das mich daran erinnert, dass ich nie wieder zum Bildschirm zurückkehren werde, ist der Nutzen des Copy-n-Paste-Modus. Auf dem Bildschirm können Sie nicht in den Kopiermodus wechseln, im Puffer zurückrollen und dann in ein anderes Fenster wechseln. In tmux können Sie mehrere Fenster gleichzeitig im Kopiermodus haben, wobei der Puffer zu verschiedenen Positionen zurückgescrollt wird. Außerdem gibt es mehrere Kopierpuffer. Und Sie müssen die Quelle nicht patchen, um die Bewegung des Cursors fFtT zu erhalten.


7
2018-01-17 16:10





Ich habe ersetzt GNU-Bildschirm mit tmux in jedem Anwendungsfall außer einem - wenn ich eine brauche HyperTerminal entspricht dem Anschluss an serielle Ports. Wie Aaron Toponce in seinem Artikel bemerkte "Verbindung mit seriellen Nullmodems mit GNU-Bildschirm", das TMUX FAQ Zustände:

Bildschirm hat eingebaute serielle und Telnet-Unterstützung; Das ist aufgebläht und ist unwahrscheinlich     zu tmux hinzugefügt werden.

Mein typisches tmux Anwendungsfall ist die Erstellung von Multi-Fenster- und Multi-Fenster-Entwicklungssitzungen in Kombination mit TMUXINATOR. Wenn du lernen willst tmuxIch empfehle, Brian P. Hogans Buch zu bekommen, tmux: Produktive Mausfreie Entwicklung.


4
2018-06-21 15:27





Ich würde sagen, dass die Verfügbarkeit des Bildschirms seine Stärke ist, aber sein Fenstersystem ist nicht so einfach zu handhaben wie Ist es. Ich muss sagen, ich benutze  die meiste Zeit im Moment und als Ergebnis haben viele Terminal-Tabs anstelle von Bildschirm-Fenstern.

@Jed Schneider: Du kannst vertikale Fensteraufteilungen mit bekommen Strg+EIN und dann | (vertikale Leiste).


1
2017-12-15 22:15





Einer der Betreuer von tmux, Thomas Adam, ist auch aufgelistet als Betreuer für die screen Projekt, obwohl er nur tmux-Code berührt, die große pro tmux über Bildschirm ist.


0
2018-01-10 23:20





Hat jemand gedacht, dass Sie weniger wahrscheinlich den Bildschirm Ihrer Sitzung verlieren werden, je nachdem, wie Sie ihn benutzen?

Ich habe tmux in den letzten Tagen gelernt und mag es wirklich, besonders die erstaunliche Anpassung, die man in ~ / .tmux.conf machen kann.

Aber es ist mir aufgefallen, mit Bildschirm, zumindest in der Art, wie ich es am meisten benutze, leben Sitzungen auf dem Remote-Computer, auf dem ich Bildschirm laufen lasse. Gewöhnlich, um einen lang laufenden Befehl auszuführen, von dem ich mich später abkoppeln und später zurückkommen kann. Ich leite den Bildschirm nur selten lokal von meiner Workstation aus, um mich mit anderen Hosts zu verbinden.

Mit tmux, zumindest in der Art, wie ich es am meisten benutze, laufen es und seine verbundenen Sitzungen lokal auf meiner Workstation.

Wenn meine Arbeitsstation die Verbindung verliert, stelle ich mir vor, dass tmux Verbindungen zu allen Servern löscht, mit denen ich verbunden war?

Ich nehme an, dass könnte ein Profi für Bildschirm über tmux sein, abhängig davon, wie Sie es verwenden?


-3



War das eine Frage oder eine Antwort? Der Zweck von beiden - Bildschirm und tmux ist nicht Terminal-Datei-Deskriptor (Stdin, Stdout, Stderr) zu bestimmten Verbindung von Betriebssystem zugewiesen verwenden, deshalb können beide von Netzwerkstörungen überleben und weiter ausgeführt werden. Wenn Sie externe Verbindungen von tmux / screen zu entfernten Ressourcen einrichten und diese Verbindung kaputt geht, hat das überhaupt nichts mit tmux / screen zu tun, da beide diese Dinge nicht kontrollieren können. Ich empfehle Ihnen, Ihre Antwort zu bearbeiten, wenn Sie nicht markiert werden möchten, da die Antwort eine Frage beantworten soll - Alex