Le mode GNU Screen Copy bloque l'exécution?

11

J'utilise le mode de défilement / copie de GNU Screen. Alors j'ai frappé Control-A [pour entrer en mode copie, faites défiler jusqu'à la section qui m'importe ... et puis j'oublie.

Cependant, il semble que laisser l'écran GNU en mode défilement / copie bloque l'exécution de (quelle que soit l'application à l'époque). Par exemple, si je lance un serveur Web local si je suis en mode défilement / copie, les demandes adressées à ce serveur Web expireront: le processus ne répondra pas tant que je ne quitterai pas le mode copie / défilement.

J'ai vu cela à la fois dans le script / serveur Ruby On Rails et avec l'outil Python Coller.

J'ai envisagé d'activer le mode de journalisation pour mes fenêtres, puis de simplement parcourir / parcourir ces fichiers journaux comme alternative, mais si cela peut être contrôlé par un autre moyen (réglage, activation du mode de copie d'une manière différente), je suis très intéressé.

Ma version d'écran dit:

Version d'écran 4.00.03 (FAU) 23-Oct-06

(J'ai posé cette question sur quora.com, mais c'est peut-être un meilleur endroit)

RyanWilcox
la source

Réponses:

7

La raison pour laquelle vos processus bloquent est que l'écran bloquera le canal de sortie du processus lorsque vous êtes en mode copier-coller. Je ne le vois pas vraiment comme un bug, car en réalité, vous demandez à l'écran de stocker une quantité potentiellement illimitée d'informations dans son tampon pendant que vous copiez / collez. Si vous souhaitez que la sortie d'un programme passe, mais que vous puissiez également l'interrompre de temps en temps, essayez ceci.

program > logfile 2>&1 & 
less logfile

Le 2> & 1 combinera stderr et stdout de votre programme. Le & envoie le programme en arrière-plan. Utilisez fg pour le mettre au premier plan si vous en avez besoin. Appuyez maintenant sur F pour suivre la fin du fichier journal à mesure qu'il grandit avec moins. Appuyez sur ctrl + c si vous devez vous arrêter et examiner quelque chose, puis sur F pour suivre à nouveau. Vous pouvez également appuyer sur & pour limiter les lignes visibles en moins à une expression régulière. Très pratique pour parcourir les fichiers journaux.

jmh
la source
"l'écran bloquera le canal de sortie du processus pendant que vous êtes en mode copier-coller" - cela peut être vrai une fois qu'une certaine quantité de sortie a été générée, mais cela ne semble pas être vrai dans ce cas: while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done- essayez d'appeler Copier mode et attendez un peu. Lorsque vous quittez le mode copie, la valeur de i aura sauté, indiquant que l'exécution s'est poursuivie en arrière-plan. Pourtant, j'ai vu la sortie de blocs d'écran pour certains processus, donc je suis curieux de savoir ce qui détermine exactement si les blocs d'écran ou non.
davidA
"ce qui détermine exactement si l'écran se bloque ou non" - la taille du tampon de défilement le détermine. Vous pouvez l'augmenter pour qu'il soit illimité, mais cela prendra de la mémoire. Mais ne bloquera pas.
san