次のような方法で、xtrace
出力をsome_file
にリダイレクトできることを知っています。
exec 2 >> some_file
set +x
...しかし、これはxtrace
出力だけでなく、元々some_file
に送信された他のコンテンツもfd 2
に送信します。これには、ほとんどのエラーメッセージと警告が含まれます。これらはすべてxtrace
とは関係ありません。
のみsome_file
のxtrace
出力をキャプチャする方法はありますか?
xtrace
出力自体、およびPS4
設定を介して収集されたタイミング情報をできるだけ歪ませない方法を探していることを追加する必要があります。
zmodload zsh/datetime
export PS4='${(j::)epochtime} %N:%i> '
あなたが探している解決策ではないかもしれませんが、過去に同様のシナリオに遭遇したことがあるので、私の頼りになるのは、トレースファイルを取得するためのpythonパーサーを記述し、気になるデータを結果のファイルに変換します。気にしない「ガベージテキスト」のパターンがxtrace出力から予測可能/区別可能である限り、解析は非常に簡単に実行できます。
例-読み取りと書き込みで構成される20分間のテストですべての送信キュー全体のすべてのIOのトレースを取得すると、40GB〜70GBのファイルになりますが、気になるデータを解析した後、結果ファイルは1〜3GBにすぎません。サイズが大きく、実際に分析と視覚化に使用できます。確かに、このような大きなファイルサイズでは、サーバークラスのシステムがすべてを処理するのに約15〜30分かかりますが、同じプロセスを実行します(別のシナリオ、同じアイデア-それぞれ約24kbの複数のログ)-すべてを取得できますすべてのログからのデータを2秒以内に単一の消費可能なファイルに変換します。
言うまでもなく、ワンストップショップを待つのではなく、キャプチャ全体に数秒/分を追加する可能性のある後処理ステップを追加する価値があるかもしれません。
頑張ってください!