straceをgrepにパイプ

straceをgrepにパイプ

straceバケツを実行しようとしていますが、cczeパイプラインが期待どおりに機能しません。

テストの実行に使用するコマンドラインは次のとおりですsudo strace -p $(pgrep apache2) | grep open。すべての行が出力され、grepは無視されます。

straceこのような行動に特別な理由がありますか?

答え1

strace標準出力ではなく標準エラーのトレースを印刷します。プログラムの標準エラーをリダイレクトするのが一般的だからです。しかし、straceの標準エラーとプログラムの標準エラーを混在させることは通常問題ではありません。

したがって、straceパイプできるようにstderrをstdoutにリダイレクトする必要があります。

sudo strace -p $(pgrep apache2) 2>&1 | grep open

あなたが本当に欲しいものを除いて

sudo strace -p $(pgrep apache2) -e open

関連情報