O modo de cópia de tela GNU bloqueia a execução?

11

Eu uso o modo scrollback / cópia do GNU Screen. Então pressionei Control-A [para entrar no modo de cópia, role até a seção que me interessa ... e depois esqueço.

No entanto, parece que deixar a tela do GNU no modo de rolagem / cópia bloqueia a execução de (qualquer aplicativo que estava ativo no momento). Por exemplo, se eu inicializar um servidor da web local se estiver no modo de rolagem / cópia, as solicitações feitas para esse servidor da Web expirarão: o processo não responderá até que eu saia do modo de cópia / rolagem.

Eu já vi isso no script / servidor Ruby On Rails e com a ferramenta Python Paste.

Eu considerei ativar o modo de log para minhas janelas e, em seguida, apenas seguir esses arquivos de log como alternativa, mas se isso puder ser controlado por outros meios (configuração, ativação do modo de cópia de uma maneira diferente), estou muito interessado.

Minha versão da tela diz:

Versão da tela 4.00.03 (FAU) 23-Oct-06

(Perguntei isso no quora.com, mas talvez este seja um lugar melhor)

RyanWilcox
fonte

Respostas:

7

A razão pela qual seus processos estão bloqueando é porque a tela bloqueará o canal de saída do processo enquanto você estiver no modo copiar e colar. Não o vejo realmente como um bug, pois, realisticamente, você está pedindo à tela para armazenar uma quantidade potencialmente ilimitada de informações em seu buffer enquanto estiver copiando / colando. Se você deseja que a saída de um programa passe, mas também pode pausá-lo de vez em quando, tente isso.

program > logfile 2>&1 & 
less logfile

O 2> & 1 combinará stderr e stdout do seu programa. O & envia o programa para o segundo plano. Use fg para trazê-lo para o primeiro plano, se necessário. Agora pressione F para seguir o final do arquivo de log à medida que cresce com menos. Pressione ctrl + c se precisar parar e examinar algo e, em seguida, F para seguir novamente. Você também pode pressionar & para limitar as linhas visíveis em menos de uma expressão regular. Muito útil ao passar por arquivos de log.

jmh
fonte
"a tela bloqueará o canal de saída do processo enquanto você estiver no modo copiar e colar" - isso pode ser verdade quando uma certa quantidade de saída for gerada, mas não parece ser verdade neste caso: while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done- tente chamar Copy modo e aguarde um pouco. Quando você sai do modo de cópia, o valor de i saltou, mostrando que a execução continuou em segundo plano. No entanto, tenho visto a saída do bloco de tela para alguns processos, por isso estou curioso para saber o que exatamente determina se o bloco de tela é ou não.
DavidA
"o que exatamente determina se a tela bloqueia ou não" - o tamanho do buffer de rolagem determina isso. Você pode aumentá-lo para ser ilimitado, mas isso exigirá memória. Mas não vai bloquear.
san