数百行から1秒に書き込むログファイルがあります。これをtmuxペインでテーリングします。
ただし、この操作を行うと、tmuxが応答しなくなります。ペインやウィンドウを変更できず、Ctrlキーを押しながらCキーを押してもテールを停止できません。
約3分後、最終的にCTRL + Cでテールが殺され、制御を取り戻しますが、それまで何もできません(端末からブラウザなどの別のウィンドウへの変更を除く)。
とにかくこれを解決する方法はありますか?ログファイルに非常に多くの行が書き込まれているため、問題が発生していると思われます。
問題は、特にペインに垂直方向の分割がある場合、tmuxのオーバーヘッドである可能性が高くなります。多数の制御文字が書き込まれているときに画面を更新しないようにtmuxを設定できます。詳細についてはman tmux
を参照してください。ただし、〜/ .tmux.confには次のものがあります。
set -g c0-change-trigger 20 #default is 250
set -g c0-change-interval 1000 #default is 100
これにより、tmuxは、1ミリ秒あたり20の制御シーケンスが画面に出力されている場合、更新間隔を1000ミリ秒(1/sec)に1回に変更する必要があることを示します。
これは、tmux 2.1で大幅に改善されました。
他の回答で言及されたc0-オプションは削除され、バッファリングへのバックオフアプローチが導入されました: https://raw.githubusercontent.com/tmux/tmux/master/CHANGES
これは、1秒あたり数百回書き込まれるログファイルの末尾が原因である可能性はありません。
ボックスにsshするか、別のターミナルセッションを開いて、strace
を使用してtmux
プロセスにアタッチし、プロセスによって行われたシステムコールと受信したシグナルを確認します。これは間違いなく役立ちます。
例:strace -tT -pPID
ファイルへの出力strace -tT -pPID -o /path/to/tmux_output
注:
strace
は軽量のデバッガであり、過去のtmux関連の問題を解決するのに役立ちました。 tmuxは、/var/run
または/run
でファイル/ディレクトリを作成/削除できません。
これで問題が解決しないことはわかっていますが、コマンドの出力をless
またはmore
のいずれかにパイプしてみてください。
less
を使用すると、スクロールできない端末内からでもスクロールできます。
<command> | less
more
はページを印刷し、その後Enterを押してその後のすべての行を表示します。
<command> | more