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.
topdivise l'utilisation du processeur entre l'utilisateur, les processus système et les niceprocessus, nous voulons la somme des trois. Ainsi, nous pouvons exécuter topen bmode atch qui nous permet d'analyser sa sortie. Cependant, comme expliqué ici , la 1ère itération de top -bretourne 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 ddélai entre les itérations sur 0.01. Enfin, vous avez grepla ligne contenant les pourcentages CPU puis utilisez gawkpour 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 axen 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 topest 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}'