如何将循环传递给命令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'