我正在尝试运行strace
槽ccze
,但管道未按预期工作。
我运行测试的命令行是sudo strace -p $(pgrep apache2) | grep open
,所有行都是输出,忽略 grep。
有什么特别的原因strace
导致这种行为吗?
答案1
strace
在标准错误上打印其痕迹,而不是在标准输出上。那是因为想要重定向程序的标准输出是很常见的,但 strace 的 stderr 和程序的 stderr 混合在一起通常不是问题。
因此,您应该将strace
的 stderr 重定向到 stdout 以便能够通过管道传输它:
sudo strace -p $(pgrep apache2) 2>&1 | grep open
除了你真正想要的是
sudo strace -p $(pgrep apache2) -e open