Comme d'autres l'ont dit, le meilleur moyen est probablement top
. Il a besoin d'un petit ajustement et d'un peu d'analyse, mais vous pouvez l'obtenir pour vous donner l'utilisation actuelle du processeur en pourcentage.
top
divise l'utilisation du processeur entre l'utilisateur, les processus système et les nice
processus, nous voulons la somme des trois. Ainsi, nous pouvons exécuter top
en b
mode atch qui nous permet d'analyser sa sortie. Cependant, comme expliqué ici , la 1ère itération de top -b
retourne les pourcentages depuis le démarrage, nous avons donc besoin d'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 sur 0.01
. Enfin, vous avez grep
la ligne contenant les pourcentages CPU puis utilisez gawk
pour additionner les processus utilisateur, système et sympa:
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 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.
ÉDITER
Sur la base de votre commentaire, votre version de top
est différente de la mienne et vous devriez l'utiliser à 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}'