In einer tmux-Sitzung innerhalb von xterm, wenn ein Programm eine Menge Output erzeugt (wie cat very_long_file
die gesamte Sitzung für eine Weile eingefroren ist. Auch wenn ich Strg-C drücke, wird nichts unterbrochen. Vermutlich, weil tmux eingefroren ist und Strg-C nicht an weiterleitet Gibt es eine Möglichkeit, dies zu verhindern?
38
Antworten:
Die richtige Lösung besteht darin, die c0- * -Optionen von tmux zu prüfen, um zu versuchen, die Ausgabe mit einer Geschwindigkeitsbegrenzung zu versehen. Der Grund, warum dieses Problem überhaupt besteht, liegt darin, dass Daten schneller an das Terminal gesendet werden, als es anzeigen kann. Daher ist die Geschwindigkeitsbegrenzung die einzige Möglichkeit.
quelle
setw -g c0-change-interval 100
undsetw -g c0-change-trigger 250
macht für mich keinen Unterschied. Ich benutze tmux-1.8. Habe ich etwas falsch gemacht?set-window-option -g ...
in meiner.tmux.conf
.Ich habe immer noch dieses Problem in tmux 1.6-2 auf Ubuntu 12.10. Eine Problemumgehung, die ich gefunden habe, besteht darin, die Sitzung zu beenden (Präfix + d) und dann erneut zuzuordnen (ein
tmux attach
guter Kandidat für einen schnellen Shell-Alias). Es sieht so aus, als ob tmux unter der Haube tatsächlich reagiert. Sie können mit Strg-C bestätigen, dass Ihr Prozess tatsächlich sofort beendet wird. Es ist nur die Zeichnung, die blockiert. Detatch funktioniert sofort, und wenn Sie es erneut anfügen, wird die Zeichnung bis zum Ende übersprungen.quelle
tmux attach
, oder?tmux attach
.Soweit ich weiß, gibt es keine Möglichkeit, dies in aktuellen Releases zu verhindern, es wird jedoch noch daran gearbeitet. Sie finden einige Patches auf der Mailingliste von tmux unter http://thread.gmane.org/gmane.comp.terminal-emulators.tmux.user/2689 .
Ein gutes Schlüsselwort für die Suche im Web ist "Flusskontrolle".
quelle
Leider wurden die c0- * -Optionen für die Ratenbegrenzung ab tmux Version 2.1 ( Changelog ) entfernt. Soweit ich weiß, besteht die einzige Möglichkeit, die Ratenbegrenzung anzupassen, darin, die sie beeinflussenden Variablen im Quellcode (tmux.h) zu aktualisieren:
" READ_SIZE ist die maximale Datengröße, die von einem Pty gespeichert werden soll (das Ereignis mit hohem Wasserzeichen). READ_BACKOFF ist die Datenmenge, die auf die Ausgabe auf ein Tty wartet, bevor Pty-Lesevorgänge zurückgesetzt werden. READ_TIME ist die Zeitspanne, die bis zum nächster Lesevorgang (in Mikrosekunden), wenn ein tty über READ_BACKOFF liegt. "
Wo finden Sie die Standardeinstellungen: (ab tmux v2.2):
quelle
Die Antwort https://superuser.com/a/589896/311481 funktioniert einwandfrei. Ich verwende folgende Werte:
Ein weiterer Tipp: Wenn Sie in tmux ssh verwenden, verwenden Sie stattdessen mosh: http://mosh.mit.edu/ . Bei Bedarf wird versucht, den letzten Bildschirmstatus anzuzeigen, in dem Zwischenprodukte gelöscht werden. Tmux friert also nie ein, wenn in seinen Fenstern viele Ausgaben mit Mosh-Sessions generiert werden.
quelle
Probieren Sie einen anderen Terminal-Emulator aus. Unter RedHat 6.5 gibt es auf der Konsole (KDE) kein Problem mit dem Einfrieren (tmux 2.3 und master). Sowohl xterm als auch gnome-terminal können schlecht einfrieren.
quelle