私たちは本番環境でアプリケーションを実行する画面を持っています。 (何人かの人々は反対するかもしれないと思いますが、私たちには本当にうまくいきましたが…)コピーモードで上にスクロールしてから、コピーモードの終了を忘れて切り離すとプログラムがブロックされます(私の考えには一定時間が経過した後) 。
現在起こっていることは、アクティブコピーモードのために画面バッファがいっぱいになって消去されないことです。これにより、実行中のプログラムが画面に戻り、コピーモードを終了するまで停止します。私はこの間違いを何度も犯しました。それを防ぐ方法はありますか? (たとえば、分離時に自動的にコピーモードを終了したり、コピーモード中に分離することはできません)。
答え1
線を引く
defnonblock on
存在する~/.screenrc
またおすすめ
defflow off
画面出力をブロックする代わりに、Ctrl-QとCtrl-Sをアプリケーションに渡します。
答え2
画面を修正せずに解決策がないかどうか疑問です。しかし、scroll.py
少なくとも問題を示すためにこのスクリプトを作成しました。
#!/usr/bin/env python3
import time
with open("/tmp/scroll", mode="w") as f:
t1 = time.time()
while True:
t2 = time.time()
tdiff = t2 - t1
t1 = t2
text = f"tdiff={tdiff} {'!!!!!!!!' if tdiff > 0.5 else ''}"
print(text, flush=True)
print(text, flush=True, file=f)
time.sleep(0.01)
./scroll.py
スクリーンセッションとはtail -f /tmp/scroll
異なる端末で実行してください。Ctrl-A ESC
コピーモードに入るには押します。数秒後にtail
出力が停止し、コピーモードを終了すると、次のような出力が生成されます。
tdiff=0.010303020477294922
tdiff=5.808627605438232 !!!!!!!!
tdiff=0.010957002639770508