如何将循环传递给命令perf?

时间:2017-09-19 18:28:32

标签: bash perf

以下命令有效。

perf stat -I 500 -e cycles sleep 5
while true; do : ; done

但是,此命令会导致语法错误。

perf stat -I 500 -e cycles  while true; do : ; done
bash: syntax error near unexpected token `do'

我尝试通过转发;来纠正此问题,但这只会导致不同的错误。

$ perf stat -I 500 -e cycles  while true\; do : \; done                                                                                                                                                                                                                                    
#           time             counts unit events
     0.005386453      <not counted>      cycles                   
     0.005678719      <not counted>      cycles                   
Workload failed: No such file or directory

将我的bash循环传递给perf的正确语法是什么?

1 个答案:

答案 0 :(得分:2)

perf只能运行带参数(execve语义)的可执行文件。它本身不会调用shell,因此不会运行bash命令。

您可以手动调用shell并让它解释您的命令:

perf stat -I 500 -e cycles bash -c 'while true; do true; done'