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

问题描述:

以下命令有效。如何将循环传递给命令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

perf只能与参数(execve语义)运行可执行文件。它不会自行调用一个shell,所以不会运行bash命令。

您可以手动调用一个shell并将它解释你的命令:

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