Mode Copy Layar GNU memblokir eksekusi?

11

Saya menggunakan mode gulir balik / salin Layar GNU. Jadi saya tekan Control-A [untuk masuk ke mode salin, gulir ke bagian yang saya pedulikan ... lalu saya lupa.

Namun, sepertinya meninggalkan layar GNU dalam mode scrollback / copy menghalangi eksekusi (aplikasi apa pun yang aktif saat itu). Misalnya, jika saya menjalankan server web lokal jika saya dalam mode scrollback / copy, maka permintaan yang dibuat ke server web itu akan habis: proses tidak merespon sampai saya keluar dari mode copy / scrollback.

Saya telah melihat ini baik di script / server Ruby On Rails dan dengan alat Python Paste.

Saya telah mempertimbangkan mengaktifkan mode logging untuk windows saya, kemudian hanya tailing / grepping melalui file-file log sebagai alternatif, tetapi jika ini dapat dikontrol dengan cara lain (pengaturan, mengaktifkan mode salin dengan cara yang berbeda) Saya sangat tertarik.

Layar saya -versi mengatakan:

Versi layar 4.00.03 (FAU) 23-Okt-06

(Saya menanyakan ini di quora.com, tapi mungkin ini tempat yang lebih baik)

RyanWilcox
sumber

Jawaban:

7

Alasan bahwa proses Anda memblokir adalah karena layar akan memblokir pipa keluaran proses saat Anda berada dalam mode salin tempel. Saya tidak melihatnya sebagai benar-benar bug, karena secara realistis Anda meminta layar untuk menyimpan informasi yang berpotensi tak terbatas dalam buffernya saat Anda menyalin / menempel. Jika Anda ingin memiliki keluaran dari suatu program yang lewat, tetapi juga dapat menghentikannya sesekali, coba ini.

program > logfile 2>&1 & 
less logfile

2> & 1 akan menggabungkan stderr dan stdout dari program Anda. The & mengirim program ke latar belakang. Gunakan fg untuk membawanya ke latar depan jika Anda perlu. Sekarang tekan F untuk mengikuti akhir dari file log saat itu tumbuh dengan lebih sedikit. Tekan ctrl + c jika Anda perlu berhenti dan memeriksa sesuatu, lalu F untuk mengikuti lagi. Anda juga dapat menekan & untuk membatasi garis yang terlihat dalam kurang dari ekspresi reguler. Sangat berguna saat menelusuri file log.

jmh
sumber
"Layar akan memblokir pipa output dari proses saat Anda berada dalam mode salin" - ini mungkin benar setelah sejumlah output telah dihasilkan, tetapi tampaknya tidak benar dalam kasus ini: while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done- coba gunakan Copy mode dan tunggu sebentar. Ketika Anda keluar dari mode salin, nilai i akan melonjak, menunjukkan bahwa eksekusi berlanjut di latar belakang. Namun saya telah melihat output blok layar untuk beberapa proses, jadi saya ingin tahu apa yang sebenarnya menentukan apakah blok layar atau tidak.
davidA
"apa tepatnya yang menentukan apakah layar diblokir atau tidak" - ukuran buffer scrollback menentukannya. Anda dapat meningkatkannya menjadi tidak terbatas, tetapi ini akan membutuhkan memori. Tetapi tidak akan memblokir.
san