以下命令有效。
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
的正确语法是什么?
答案 0 :(得分:2)
perf
只能运行带参数(execve
语义)的可执行文件。它本身不会调用shell,因此不会运行bash命令。
您可以手动调用shell并让它解释您的命令:
perf stat -I 500 -e cycles bash -c 'while true; do true; done'