GNU Ekran Kopyalama modu yürütmeyi engeller mi?


11

GNU Screen'in geri kaydırma / kopyalama modunu kullanıyorum. Bu yüzden Control-A'ya basıyorum [kopya moduna girmek için, önem verdiğim bölüme ilerleyin ... ve sonra unuturum.

Bununla birlikte, GNU ekranını geri kaydırma / kopyalama modunda bırakmak, (o sırada hangi uygulama varsa) yürütülmesini engelliyor gibi görünüyor. Örneğin, geri kaydırma / kopyalama modundaysam yerel bir web sunucusunu çalıştırırsam, o web sunucusuna yapılan istekler zaman aşımına uğrar: Kopyalama / geri kaydırma modundan çıkana kadar işlem yanıt vermiyor.

Bunu Ruby On Rails kodunda / sunucusunda ve Python aracı Yapıştır ile gördüm.

Pencerelerim için günlüğe kaydetme modunu açmayı düşündüm, daha sonra alternatif olarak bu günlük dosyaları arasında dolaşıyor / selamlıyoruz, ancak bu başka bir yolla kontrol edilebilirse (ayar, kopyalama modunu farklı bir şekilde etkinleştirerek) çok ilgileniyorum.

Ekran sürümüm diyor:

Ekran sürümü 4.00.03 (FAU) 23-Eki-06

(Bunu quora.com'da sordum, ama belki de bu daha iyi bir yer)

Yanıtlar:


8

İşlemlerinizin engellenmesinin nedeni, kopyala yapıştırma modundayken ekranın işlemin çıkış borusunu bloke etmesidir. Gerçekten bir hata olarak görmüyorum, çünkü gerçekçi olarak siz kopyalama / yapıştırma sırasında ekranındaki potansiyel olarak sınırsız miktarda bilgiyi saklamak istiyorsunuz. Bir programın çıktısının geçmesini istiyorsanız, ancak arada bir duraklatabiliyorsanız, bunu deneyin.

program > logfile 2>&1 & 
less logfile

2> & 1, stderr ve stdout'u programınızdan birleştirir. & Programı arka plana gönderir. Gerekirse ön plana getirmek için fg düğmelerini kullanın. Şimdi daha az büyüdükçe günlük dosyasının sonunu takip etmek için F tuşuna basın. Bir şeyi durdurup incelemeniz gerekiyorsa ctrl + c tuşlarına, ardından tekrar izlemek için F tuşuna basın. Görünür çizgileri normal ifadeyle daha az sınırlamak için & düğmelerine de basabilirsiniz. Günlük dosyalarını incelerken çok kullanışlıdır.


"Kopyala yapıştırma modundayken ekran işlemin çıkış borusunu engeller" - belirli bir miktar çıktı üretildikten sonra bu doğru olabilir, ancak bu durumda doğru görünmüyor: while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done- Kopyalamayı çağırmayı deneyin ve biraz bekleyin. Kopyalama modundan çıktığınızda, i değerinin sıçramış olması, yürütmenin arka planda devam ettiğini gösterir. Yine de bazı işlemler için ekran bloğu çıktısı gördüm, bu yüzden ekran bloklarının olup olmadığını tam olarak neyin belirlediğini merak ediyorum.
davidA

"ekranın engellenip engellenmeyeceğini tam olarak ne belirler?" Sınırsız olarak artırabilirsiniz, ancak bu bellek alır. Ama engellemeyecek.
san
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.