2017-09-19 4 views
0

Les commandes suivantes sont valides.Comment passer une boucle à la commande perf?

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

Cependant, cette commande entraîne une erreur de syntaxe.

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

J'ai essayé de corriger cela en échappant à la ;, mais il en résulte que dans une autre erreur.

$ 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 

Quelle est la syntaxe correcte pour passer ma boucle bash à perf?

Répondre

2

perf ne peut exécuter que des exécutables avec des paramètres (execve sémantique). Il n'invoque pas un shell par lui-même, donc n'exécutera pas de commandes bash.

Vous pouvez appeler manuellement un shell et avez INTERPRETER votre commande:

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