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.