管道 strace 到 grep

And*_*rei 40 io-redirection strace

我正在尝试运行stracetrough ccze,但管道没有按预期工作。

我正在运行以测试的命令行是sudo strace -p $(pgrep apache2) | grep open,所有行都是输出,忽略 grep。

有什么特别之处strace会导致这种行为吗?

Gil*_*il' 63

strace在标准错误上打印其跟踪,而不是在标准输出上。那是因为想要重定向程序的标准输出是很常见的,但通常不是 strace 的 stderr 和程序的 stderr 混合的问题。

因此,您应该将strace的 stderr重定向到 stdout 以便能够对其进行管道传输:

sudo strace -p $(pgrep apache2) 2>&1 | grep open
Run Code Online (Sandbox Code Playgroud)

除了你真正要找的是

sudo strace -p $(pgrep apache2) -e open
Run Code Online (Sandbox Code Playgroud)