我在Ubuntu(12.0.4 LTS)上使用perf(Linux工具), 而我现在仍然试图将工具的输出重定向到文件。 许多帖子都解决了这个问题,但任何一个帖子都解决了 建议的解决方案没有为我工作。
我在这里尝试的是:跟踪pid的统计数据
并将它们存储在一个文件中。在一个终端中,我运行perf工具,在另一个终端上,我使用kill -INT命令(sudo kill -INT $pid
)终止了perf过程。受到网络上不同解决方案的启发(例如how to save ouput of perf (Linux tool) to a file?),我尝试了不同的命令组合,例如:
perf stat -o hhe.txt -e minor-faults,major-faults,cs -p 14615
perf stat --output hhe.txt -e minor-faults,major-faults,cs -p 14615
perf stat --output hhe.txt --append -e minor-faults,major-faults,cs -p 14615
perf stat -e minor-faults,major-faults,cs -p 14615 2> hhe.txt
perf stat -e minor-faults,major-faults,cs -p 14615 0> hhe.txt
perf stat -e minor-faults,major-faults,cs -p 14615 >> hhe.txt
对于在sudo模式下运行的所有这些命令 输出不会写入文件。我不知道为什么。也许是因为杀戮命令;但以下链接表明它有效:http://comments.gmane.org/gmane.linux.kernel.perf.user/911
我不确定我做错了什么。任何帮助,将不胜感激。
答案 0 :(得分:2)
我也使用Ubuntu 12.04,它可能取决于你的perf版本。
我的Perf检验是3.2.40。 (您可以通过以下方式查看:
perf --version
由于我的版本高于 3.x ,我尝试了以下命令,这对我有用:
3> results.log perf stat -e cycles --log-fd 3 ls> ls.txt 强>
所以根据你的情况,你可以尝试:
3> hhe.txt perf stat -e minor-faults,major-faults,cs -p 14615 --log-fd 3 ls> ls.txt 强>
与此同时,我发现这篇文章非常有用:
perf使用什么流?
https://unix.stackexchange.com/questions/89591/what-stream-does-perf-use
希望这会有所帮助:)
答案 1 :(得分:2)
我刚刚在命令末尾添加了这两个参数,它在2个文件中为我捕获了所有内容。我不知道为什么我们需要2个不同的文件,但我无法将所有内容重定向到1个文件。 2 - ;是针对stderr和1>是stdout。你可以尝试这个,看看它是否有效。我能够用这个来捕捉我想要的东西:
2>temp.out 1>temp1.out
例如,您的命令可能看起来像 -
perf stat -e minor-faults,major-faults,cs -p 14615 2>temp.out 1>temp1.out