次のパイプラインがあります。
command1 | command2
両方のコマンドを同時に追跡する方法はありますか?
答え1
次のように個々のトレースを取得できます。
strace -f sh -c 'command1 | command2'
"-f" は子プロセスへのフォーク呼び出しに従います。したがって、command1 または command2 によって呼び出されるサブコマンドも取得できます。また、プロセストレースも取得できます。獲得sh
もできます。各プロセス出力を別々のファイルにしたい場合は、「-ff」オプションは次のようにサブプロセスを追跡し、「-o」ファイル名にPIDを追加します。
strace -ff -o trace sh -c 'command1 | command2'
これにより、trace.<PID>
分岐された各子孫ごとに別々のファイルを作成する必要があります。
答え2
はい、strace
パイプラインのすべてのコマンドの前に、より簡単な分析のためにstderrを別のファイルにリダイレクトします。
strace -o trace1.out command1 | strace -o trace2.out command2