GNU Screen Copy-Modus blockiert Ausführung?

11

Ich verwende den Scrollback- / Kopiermodus von GNU Screen. Also drücke ich Strg-A [um in den Kopiermodus zu wechseln, scrolle zu dem Abschnitt, der mir wichtig ist ... und vergesse dann.

Es scheint jedoch, als würde der GNU-Bildschirm im Scrollback- / Kopiermodus die Ausführung blockieren (unabhängig davon, welche App zu diesem Zeitpunkt aktiv war). Wenn ich beispielsweise einen lokalen Webserver starte, wenn ich mich im Scrollback- / Kopiermodus befinde, läuft die Anforderung an diesen Webserver ab: Der Prozess reagiert erst, wenn ich den Kopier- / Scrollback-Modus beende.

Ich habe dies sowohl im Ruby On Rails-Skript / Server als auch mit dem Python-Tool Einfügen gesehen.

Ich habe überlegt, den Protokollierungsmodus für meine Fenster zu aktivieren und dann alternativ nur diese Protokolldateien zu durchsuchen / zu durchsuchen. Wenn dies jedoch auf andere Weise gesteuert werden kann (Einstellung, Aktivierung des Kopiermodus auf andere Weise), bin ich sehr interessiert.

Meine Bildschirmversion sagt:

Bildschirmversion 4.00.03 (FAU) 23-Okt-06

(Ich habe dies auf quora.com gefragt, aber vielleicht ist dies ein besserer Ort)

RyanWilcox
quelle

Antworten:

7

Der Grund dafür, dass Ihre Prozesse blockiert werden, liegt darin, dass der Bildschirm die Ausgabepipe des Prozesses blockiert, während Sie sich im Kopier- und Einfügemodus befinden. Ich sehe es nicht wirklich als Fehler an, da Sie realistisch gesehen den Bildschirm auffordern, eine potenziell unbegrenzte Menge an Informationen in seinem Puffer zu speichern, während Sie kopieren / einfügen. Wenn Sie möchten, dass die Ausgabe eines Programms vorbeigeht, es aber auch gelegentlich anhalten kann, versuchen Sie dies.

program > logfile 2>&1 & 
less logfile

Die 2> & 1 kombinieren stderr und stdout aus Ihrem Programm. Das & sendet das Programm in den Hintergrund. Verwenden Sie fg, um es bei Bedarf in den Vordergrund zu bringen. Drücken Sie nun F, um dem Ende der Protokolldatei zu folgen, da diese mit weniger wächst. Drücken Sie Strg + C, wenn Sie anhalten und etwas untersuchen müssen, und dann F, um erneut zu folgen. Sie können auch & drücken, um die sichtbaren Linien in weniger auf einen regulären Ausdruck zu beschränken. Sehr praktisch beim Durchsuchen von Protokolldateien.

jmh
quelle
"Der Bildschirm blockiert die Ausgabepipe des Prozesses, während Sie sich im Kopier-Einfügemodus befinden" - Dies kann zutreffen, sobald eine bestimmte Ausgabemenge generiert wurde. In diesem Fall scheint dies jedoch nicht der Fall zu sein: while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done- Versuchen Sie, Copy aufzurufen Modus und warten Sie ein bisschen. Wenn Sie den Kopiermodus verlassen, ist der Wert von i gesprungen, was zeigt, dass die Ausführung im Hintergrund fortgesetzt wurde. Ich habe jedoch für einige Prozesse eine Bildschirmblockausgabe gesehen, daher bin ich gespannt, was genau bestimmt, ob Bildschirmblöcke ausgegeben werden oder nicht.
DavidA
"Was genau bestimmt, ob Bildschirmblöcke oder nicht" - die Größe des Scrollback-Puffers bestimmt es. Sie können es auf unbegrenzt erhöhen, dies nimmt jedoch Speicherplatz in Anspruch. Wird aber nicht blockieren.
San