GNU Screen Copyモードは実行をブロックしますか?


11

GNU Screenのスクロールバック/コピーモードを使用しています。だから私はControl-Aを押して[コピーモードに入り、気になるセクションまでスクロールアップして...そして忘れる。

ただし、GNU画面をスクロールバック/コピーモードのままにすると、(その時点でアプリが起動していたものは)実行がブロックされたように見えます。たとえば、スクロールバック/コピーモードでローカルWebサーバーを起動すると、そのWebサーバーへのリクエストはタイムアウトします。コピー/スクロールバックモードを終了するまで、プロセスは応答しません。

Ruby On Railsスクリプト/サーバーとPythonツールの貼り付けの両方でこれを確認しました。

私は自分のウィンドウのログモードをオンにして、代わりにそれらのログファイルをテイリング/グレッピングすることを検討しましたが、これが別の方法(設定、コピーモードのアクティブ化を別の方法で行う)で制御できる場合は、非常に興味があります。

私の画面のバージョンは言う:

画面バージョン4.00.03(FAU)2006年10月23日

(私はquora.comでこれを尋ねましたが、おそらくこれがより良い場所です)

回答:


7

プロセスがブロックしている理由は、コピー貼り付けモードのときにscreenがプロセスの出力パイプをブロックするためです。現実には、コピー/貼り付け中に無制限の量の情報をバッファに保存するように画面に要求しているので、私はそれを実際にはバグとは見なしていません。プログラムの出力を渡したいが、たまに一時停止できるようにしたい場合は、これを試してください。

program > logfile 2>&1 & 
less logfile

2>&1は、プログラムからstderrとstdoutを組み合わせます。&はプログラムをバックグラウンドに送信します。必要に応じて、fgを使用して前面に移動します。次に、Fを押して、ログファイルが少なくなるにつれてログファイルの末尾を追跡します。何かを停止して調べる必要がある場合はctrl + cを押し、次にFを押して再度追跡します。また、&を押して、表示される行を正規表現に限定することもできます。ログファイルを調べるときに非常に便利です。


「コピー貼り付けモードでは、画面がプロセスの出力パイプをブロックします」-これは、一定量の出力が生成されると当てはまる可能性がありますが、この場合は当てはまらないようです:while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done-コピーを呼び出してみてくださいモードと少し待ってください。コピーモードを終了すると、iの値がジャンプし、バックグラウンドで実行が継続されていることが示されます。しかし、一部のプロセスの画面ブロック出力を確認したので、画面ブロックを行うかどうかを正確に決定するものについて知りたいと思います。
davidA 2018

「画面がブロックするかどうかを正確に決定するもの」-スクロールバックバッファーのサイズによって決定されます。無制限に増やすことができますが、これにはメモリが必要になります。しかし、ブロックしません。
さん
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.