Je veux voir l'utilisation du processeur.
J'ai utilisé cette commande:
top -bn1 | grep "Cpu(s)" |
sed "s/.*, *\([0-9.]*\)%* id.*/\1/" |
awk '{print 100 - $1}'
Mais ça retourne à 100%.
Quelle est la bonne façon?
Pour obtenir l’utilisation du processeur, le meilleur moyen est de lire le fichier/proc/stat. Voir man 5 proc
pour plus d'aide.
Il y a un script utile écrit par Paul Colby que j'ai trouvé ici
#!/bin/bash
# by Paul Colby (http://colby.id.au), no rights reserved ;)
PREV_TOTAL=0
PREV_IDLE=0
while true; do
CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics.
unset CPU[0] # Discard the "cpu" prefix.
IDLE=${CPU[4]} # Get the idle CPU time.
# Calculate the total CPU time.
TOTAL=0
for VALUE in "${CPU[@]:0:4}"; do
let "TOTAL=$TOTAL+$VALUE"
done
# Calculate the CPU usage since we last checked.
let "DIFF_IDLE=$IDLE-$PREV_IDLE"
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
echo -en "\rCPU: $DIFF_USAGE% \b\b"
# Remember the total and idle CPU times for the next check.
PREV_TOTAL="$TOTAL"
PREV_IDLE="$IDLE"
# Wait before checking again.
sleep 1
done
enregistrez-le dans cpu_usage
, ajoutez la permission d'exécution chmod +x cpu_usage
et exécutez:
./cpu_usage
pour arrêter le script, appuyez sur Ctrl+c
Pourquoi ne pas utiliser htop
[visualiseur de processus interactif]? Pour l'installer, ouvrez une fenêtre de terminal et tapez:
Sudo apt-get install htop
Voir également man htop
pour plus d'informations et pour le configurer.
J'ai trouvé une solution qui fonctionne bien, la voici:
top -bn2 | grep '%Cpu' | tail -1 | grep -P '(....|...) id,'
Je ne suis pas sûr, mais il me semble que la première itération de top
avec le paramètre -n
renvoie des données factices, toujours les mêmes dans tous mes tests.
Si j'utilise -n2
, la seconde image est toujours dynamique. La séquence est donc:
top -bn2
grep '%Cpu'
grep -P '(....|...) id,'
J'espère que ça aide, Paul