Processus Unix ‘utilisation du processeur

Je dois déterminer l’utilisation du processeur sous Unix … Donc, je veux écrire un script bash qui activera le timer, exécutera un processus, arrêtera le timer. Et je dois savoir comment ce processus a utilisé le processeur. Et puis comparer avec un autre processus – lequel d’entre eux utilise moins de CPU. J’ai essayé ce thread , mais c ++ utilise, je voudrais le faire en bash. Merci.

Vous voulez “activer la timer, exécuter un processus, arrêter la timer”. Bash fournit une commande intégrée pour chronométrer les processus, appelée temporairement. Pour trouver, par exemple, combien de temps la commande date doit être exécutée:

 $ time date Mon Dec 30 12:16:22 PST 2013 real 0m0.003s user 0m0.000s sys 0m0.004s 

La première ligne de sortie ci-dessus est le résultat de la commande de date . Les trois dernières sont de time en time vous dire combien de temps la commande de date a été exécutée (réelle) et le temps CPU passé en mode utilisateur et en mode système.

time affichera éventuellement également l’utilisation du processeur, calculée comme la sum de l’heure utilisateur et du temps système divisée par le temps réel. Avec la variable d’environnement TIMEFORMAT suivante, nous obtenons une sortie qui ressemble à la valeur par défaut, à l’exception de l’ajout d’une ligne indiquant l’utilisation du processeur en pourcentage:

 $ TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS\nCPU\t%P%%' $ time sleep 1 real 0m1.003s user 0m0.000s sys 0m0.000s CPU 0.00% 

La chaîne est au format $'...' sorte que \n soit interprété comme une nouvelle ligne et \t comme un onglet. Si on ne veut pas de nouvelles lignes et des tabulations, alors $ ne serait pas nécessaire. Par exemple, ce qui suit produirait les mêmes informations mais sur une seule ligne:

 TIMEFORMAT='real=%R user=%U sys=%S CPU=%P%%' 

Dans les spécifications TIMEFORMAT ci-dessus, %P fournit l’utilisation du processeur en pourcentage. Pour illustration, j’ai également simplifié la dernière spécification en supprimant les options “3” et “l”; en conséquence, le temps est affiché avec une précision par défaut et en secondes plutôt que sous forme de minutes et de secondes plus longues. Voir la description de la variable d’environnement TIMEFORMAT dans man bash pour plus d’informations.