/dev/nullにパイプされた出力を見てください。

/dev/nullにパイプされた出力を見てください。

数分から数日まで実行できるいくつかの科学プログラムがあります。プログラムは、キャリッジリターンで終わる進捗情報をstdoutに出力します。

プログラムが数日間実行されている場合は、大量のログファイルを回避するために通常、出力を/ dev / nullにパイプします。

生成されたすべてのテキストを保持せずにプログラムの出力を定期的に観察する方法はありますか?

答え1

screenセッションを開始するには、サーバーでsshを実行して実行する必要があります。そこから長期実行科学プログラムを起動し(通常は標準出力に出力)、いつでも切断します。出力を表示するたびに、sshをサーバーに戻して実行して、screen -R最後に分離されたセッションに再接続します。

同様に機能する代わりにtmux使用することもできます。代わりにscreen実行してみてください。tmux attach-sessionscreen -R

科学プログラムのインスタンスにも同じことを行います。いいえスクリーンセッションで開始:プログラムPIDを見つけて、次のコマンドを実行します。

screen
reptyr <PID>

新しいスクリーンセッションに再接続してください。

答え2

私はこの問題の分野で新しいソリューションを開発しました。pw(パイプライン監視)ユーティリティ

これは、単一のファイルに2000行未満の行があり、ライブラリに依存しない小さなBSDライセンスCプログラムであり、小さなメモリ領域を持つ小さな実行可能ファイルを生成します。

pw標準入力から継続的に読み取るので/dev/null

pwシェルジョブ制御によってバックグラウンドに切り替えられたことを検出しても、入力は読み取られますが、ディスプレイは更新されません。

本当に簡単です。

yourlongrunningprogram | pw &

次に、fgフォアグラウンドに移動して最新の出力を確認し、バックCtrlグラウンドで再度実行します。Zbg

pwフィルタリング、トリガ、分割画面操作、スナップショット履歴の読み込みなど、いくつかの素晴らしいインタラクティブ機能があります。ユーザーインターフェイスはVi memeです。:コロン命令などがあります。一部のコマンドには数字の接頭辞があり、繰り返されるコマンドはで完了します.

数時間または数日間プログラムを実行しましたが、出力の一部が有益ではないと判断したとします。問題ありません。:v pattern一致しない行はpattern現在拒否されます。

最近開発された機能は、状態をpwファイルに保存できることです。何らかの方法でインタラクティブに設定すると、保存したファイルからその設定(すべてのフィルタ、トリガ、分割画面構成、その他のパラメータ)を簡単に再現できます。

関連情報