Beenden des Kopier- / Bildlaufmodus beim Trennen in Byobu / Bildschirm

7

Ich habe festgestellt, dass sich der Puffer füllt und schließlich den Prozess blockiert, den ich auf dem Bildschirm ausführe, wenn ich in einem Byobu-Bildschirm in den "Kopiermodus" oder "Bildlaufmodus" gehe, mich von ihm entferne und ihn laufen lasse. (Vermutlich, weil der Prozess nicht in stdout schreiben kann, da niemand die Bytes verbraucht.)

Dieses Verhalten ist irgendwie verheerend. Ist es zum Beispiel möglich

  1. Beenden Sie den Kopier- / Bildlaufmodus automatisch, wenn Sie sich vom Bildschirm lösen.

    oder

  2. Lassen Sie die Position der Ansicht, die sich im Kopier- / Bildlaufmodus befindet, vorwärts gehen, sobald der Puffer voll ist, damit der Prozess weiter ausgeführt werden kann

Freut mich über Ratschläge dazu.

aioobe
quelle
Sah in die src. Anscheinend würde dies einen Patch für den Gnu-Bildschirm erfordern. Gleiches gilt für tmux. Es gibt einfach nichts, woran Byobu sich festhalten kann, um es für Sie zu erledigen. = / Patch scheint ziemlich einfach zu sein: Wenn die Verbindung zum letzten Client getrennt wird, lassen Sie alle Fenster im Kopiermodus in den regulären Modus fallen. ODER wenn der Client die Verbindung trennt und ein Fenster im Kopiermodus anzeigt, lassen Sie dieses Fenster in den regulären Modus fallen. Es ist einfach nicht etwas, das bereits existiert. Außerdem habe ich neuen Respekt vor tmux, dieser Code scheint gut organisiert zu sein.
Andrew Domaszek
Das kommt mir so komisch vor. Screen / tmux werden häufig für Server verwendet, der Scrollback-Modus ist keine obskure Funktion, Server protokollieren häufig regelmäßig Daten auf stdout und der Puffer füllt sich schließlich. Dies muss ein wirklich häufiges Problem sein! Darf ich fragen, können Sie das reproduzieren oder ist es eine Fehlkonfiguration meinerseits?
Aioobe
1
Ich kann es reproduzieren. Am einfachsten ist es, eine große Kompilierung (glibc, gcc, libreoffice usw.) zu starten und dann zu Scrollback & Detach zu wechseln. Dies ist einer der Gründe, warum ich den Scrollback-Modus sehr selten verwende. Auch in Bezug auf die Ursache haben Sie Recht. Der Ausgabe-FIFO ist voll, sodass er zum Warten auf das Schreiben blockiert ist.
Andrew Domaszek
Danke Andrew, ich weiß das wirklich zu schätzen. Fassen Sie Ihre Kommentare in einer Antwort zusammen, wenn Sie an der Prämie interessiert sind.
Aioobe

Antworten:

4

Ihre Einschätzung ist korrekt. Das Programm, das im Scrollback-Modus-Fenster ausgeführt wird, wird angehalten, da der Ausgabepuffer voll ist und das Warten auf das Schreiben unterbrochen wird. Dieses Verhalten ist sowohl korrekt als auch wünschenswert. Der Benutzer hat den Bildlaufmodus aufgerufen, um den Bildschirminhalt anzuzeigen. Wie Sie jedoch bemerkt haben, ist dies weder praktisch noch offensichtlich, wenn die Sitzung getrennt wird.

Leider scheint es sowohl in gnu-screen als auch in tmux eine fehlende Funktion zu sein. byobu kann es nicht in einem Wrapper reparieren, da es den Scrollback-Status eines bestimmten Fensters nicht erkennen und ein Fenster nicht mit externen Befehlen ausbrechen kann, obwohl es Befehle wie der Benutzer an das Terminal senden kann würde, wäre es in der Lage, den Scrollback-Zustand zu erkennen oder sich daran zu erinnern. Weder Bildschirm noch tmux scheinen eine Funktion zu enthalten, mit der das automatische Zurücksetzen aus dem Scrollback-Modus ermöglicht wird, wenn das Terminal getrennt wird. Ein Patch wäre erforderlich.

Andrew Domaszek
quelle