Je me demande comment vous pouvez obtenir l'utilisation du processeur système et la présenter en pourcentage à l'aide de bash, par exemple.
Exemple de sortie:
57%
Dans le cas où il y aurait plus d'un cœur, ce serait bien si un pourcentage moyen pouvait être calculé.
Regardez cat /proc/stat
grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}'
EDIT s'il vous plaît lire les commentaires avant de copier-coller ceci ou de l'utiliser pour un travail sérieux. Cela n'a pas été testé ni utilisé, c'est une idée pour les personnes qui ne souhaitent pas installer un utilitaire ou pour quelque chose qui fonctionne dans n'importe quelle distribution. Certaines personnes pensent que vous pouvez "apt-get install" n'importe quoi.
NOTE: Ce n'est pas l'utilisation actuelle du processeur, mais l'utilisation globale du processeur dans tous les cœurs depuis le démarrage du système. Cela pourrait être très différent de l'utilisation actuelle du processeur. Pour obtenir la valeur actuelle, il faut utiliser top (ou un outil similaire).
Tu peux essayer:
top -bn1 | grep "Cpu(s)" | \
sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \
awk '{print 100 - $1"%"}'
Essayez mpstat
à partir du paquet sysstat
> Sudo apt-get install sysstat
Linux 3.0.0-13-generic (ws025) 02/10/2012 _x86_64_ (2 CPU)
03:33:26 PM CPU %usr %Nice %sys %iowait %irq %soft %steal %guest %idle
03:33:26 PM all 2.39 0.04 0.19 0.34 0.00 0.01 0.00 0.00 97.03
Ensuite, un certain cut
ou grep
pour analyser les informations dont vous avez besoin:
mpstat | grep -A 5 "%idle" | tail -n 1 | awk -F " " '{print 100 - $ 12}'a
Je pourrais aussi donner une réponse concrète avec ma solution, inspirée de celle de Peter Liljenberg:
$ mpstat | awk '$12 ~ /[0-9.]+/ { print 100 - $12"%" }'
0.75%
Ceci utilisera awk
pour imprimer 100 moins le 12ème champ (inactif), suivi du signe de pourcentage. awk
ne le fera que pour une ligne où le 12ème champ contient uniquement des chiffres et des points ($12 ~ /[0-9]+/
).
EDITED: J'ai remarqué que dans la réponse d'un autre utilisateur,% inactif était le champ 12 au lieu du champ 11. L'awk a été mis à jour pour prendre en compte le champ% inactif en tant que variable.
Cela devrait vous permettre d'obtenir le résultat souhaité:
mpstat | awk '$3 ~ /CPU/ { for(i=1;i<=NF;i++) { if ($i ~ /%idle/) field=i } } $3 ~ /all/ { print 100 - $field }'
Si vous voulez un arrondi entier simple, vous pouvez utiliser printf:
mpstat | awk '$3 ~ /CPU/ { for(i=1;i<=NF;i++) { if ($i ~ /%idle/) field=i } } $3 ~ /all/ { printf("%d%%",100 - $field) }'