straceをgrepにパイプする


30

stracetrough を実行しようとしていますがccze、パイプは期待通りに動作しません。

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

straceこの動作を引き起こす特別なものはありますか?

回答:


48

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

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

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

本当に探しているのは

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

できます!!ありがとうございました!-私は実際にopen呼び出しだけを見ようとしていませんでした、私はそれを例として、私が本当にやろうとしていることは色の強調表示です
アンドレイ

strace: Invalid process id: '-e'最後のコマンドで取得しています。バージョン4.8を使用しています。2010-03-30。
イライジャ・リン

ああ、私は実際にhttpd(RHEL)を持っています。
イライジャ・リン

1
置き換え@ElijahLynn apache2あなたが興味を持っているプロセスの名前でことを確認してください。pgrepプリント単一のPIDを、そうでないものを選択し、実行例sudo strace -p 1234 -e open
ジル「SO-停止されて悪」

@Andrei、vimカラーシンタックスハイライトの使用はどうですか?strace $CMD 2>&1 > /dev/null | vim -c ':set syntax=strace' -
パブロA
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.