Comme d'autres l'ont dit, le meilleur moyen est probablement top
. Il a besoin d'un peu de peaufinage et d'un peu d'analyse, mais vous pouvez l'obtenir pour vous donner l'utilisation actuelle du processeur en pourcentage.
top
répartit l'utilisation du processeur entre l'utilisateur, les processus système et nice
processus, nous voulons la somme des trois. Donc, nous pouvons exécuter top
en b
atch mode qui nous permet d'analyser sa sortie. Cependant, comme expliqué ici, la 1ère itération de top -b
retourne les pourcentages depuis le boot, il faut donc au moins deux itérations (-n 2
) pour obtenir le pourcentage actuel. Pour accélérer les choses, vous pouvez définir le d
délai entre les itérations à 0.01
. Enfin, vous grep
la ligne contenant les pourcentages CPU puis utilisez gawk
pour additionner l'utilisateur, le système et les processus agréables :
top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
----- ------ ----------- --------- ----------------------
| | | | |------> add the values
| | | |--> keep only the 2nd iteration
| | |----------------> keep only the CPU use lines
| |----------------------------> set the delay between runs
|-----------------------------------> run twice in batch mode
Je pensais que vous pouviez également obtenir ces informations via ps -o pcpu ax
en ajoutant le % d'utilisation de chaque processus en cours d'exécution. Malheureusement, comme expliqué ici, ps
"renvoie le pourcentage de temps passé à s'exécuter pendant toute la durée de vie d'un processus", ce qui n'est pas ce dont vous avez besoin.
MODIFIER
D'après votre commentaire, votre version de top
est différent du mien et vous devriez utiliser ceci à la place :
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
Et, pour éviter les problèmes de localisation, définissez les paramètres régionaux sur C :
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
sar
est la façon définitive de le faire. Ainsi, par exemple sar -u
affichera quelque chose comme ceci :
08:30:01 AM CPU %user %nice %system %iowait %idle
08:40:01 AM all 6.94 0.00 1.77 4.92 86.36
08:50:01 AM all 5.73 0.00 2.31 12.72 79.24
09:00:01 AM all 5.95 0.00 2.58 18.36 73.11
09:10:01 AM all 6.88 0.00 2.22 17.44 73.45
09:20:01 AM all 8.61 0.00 2.68 27.93 60.78
Vous ne dites pas quel Linux vous utilisez mais pour CentOS/RedHat vous devez installer le sysstat
package, et je pense que c'est la même chose sur Debian/Ubuntu.
Vous pouvez également utiliser sar pour collecter des statistiques ad hoc :
sar -o /tmp/sar.out 60 600
Rassemblera des statistiques toutes les 60 secondes 600 fois, donc 600 minutes.