Jetez un coup d'œil à cat /proc/stat
grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}'
EDITAR veuillez lire les commentaires avant de copier-coller ce texte ou de l'utiliser pour tout travail sérieux. Ceci n'a pas été testé ni utilisé, c'est une idée pour les personnes qui ne veulent pas installer un utilitaire ou pour quelque chose qui fonctionne dans n'importe quelle distribution. Certaines personnes pensent que vous pouvez "apt-get installer" n'importe quoi.
NOTE : ce n'est pas le actuel l'utilisation du CPU, mais l'utilisation globale du CPU dans tous les cœurs depuis le démarrage du système. Cela peut être très différent de l'utilisation actuelle du CPU. Pour obtenir la valeur actuelle, il faut utiliser top (ou un outil similaire).
L'utilisation actuelle du CPU peut être potentiellement calculée avec :
awk '{u=$2+$4; t=$2+$4+$5; if (NR==1){u1=u; t1=t;} else print ($2+$4-u1) * 100 / (t-t1) "%"; }' \
<(grep 'cpu ' /proc/stat) <(sleep 1;grep 'cpu ' /proc/stat)
1 votes
@julesanchez la valeur doit être canalisée ailleurs, donc ce doit être un int.
0 votes
Doing top > monfichier.txt Et l'application de votre filtre en post-traitement, n'est-elle pas correcte ?
0 votes
S'il doit s'agir d'un int, cela signifie-t-il que vous ne voulez pas vraiment le % comme indiqué dans la question ?
14 votes
Une commande qui ne nécessite pas sysstat :
ps -A -o pcpu | tail -n+2 | paste -sd+ | bc
20 votes
Réouverture du site Je ne comprends pas pourquoi ce sujet a été jugé hors-sujet. Ceux qui l'ont fermé peuvent-ils nous en dire plus ?
0 votes
Aucune de ces solutions n'a fonctionné pour moi, alors j'ai trouvé ceci : mohammadg.com/linux/
5 votes
Ma compréhension de
/proc/stat
est très limitée, mais cette phrase simple me convient parfaitement :cat <(grep 'cpu ' /proc/stat) <(sleep 1 && grep 'cpu ' /proc/stat) | awk -v RS="" '{printf "%.2f%\n", ($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5)}'
. Avec %.2f, vous pouvez contrôler le nombre de décimales que vous souhaitez afficher, et avecsleep 1
vous pouvez définir le temps sur lequel vous voulez faire la moyenne, si cela fait ce que je pense. Vous pouvez le mettre dans une boucle while bash, pour le tester en temps réel.0 votes
Aujourd'hui, j'utilise ceci :
{ head -n1 /proc/stat;sleep 0.2;head -n1 /proc/stat; } | awk '/^cpu /{u=$2-u;s=$4-s;i=$5-i;w=$6-w}END{print int(0.5+100*(u+s+w)/(u+s+i+w))}'
Ce qui donne le pourcentage moyen de cpu sur le délai donné (dans cet exemple, fixé à 200ms), retourné dans une valeur int arrondie (mais vous pouvez aussi laisser de côté l'élémentint(0.5+
partie).0 votes
Top -b -n 1 |grep Cpu|cut -d "," -f 4|cut -d " " -f 2 | awk '{cpu_usage=(100-$1)} END {print cpu_usage "%"}''
0 votes
En lisant les autres réponses, il semble que
awk -Fid '/Cpu/ { split($1, a, ","); print 100 - a[length(a)] "%"; }' < <(top -b)
est peut-être le plus équilibré entre concision, robustesse et modification... En bref, il n'y a pas besoin decat
,cut
,grep
,sed
etc.0 votes
Tant que cette question reste fermée sur Stack Overflow, je suggère d'ajouter de nouvelles réponses à cette question que j'ai ajoutée ici sur Unix and Linux Stack Exchange : Unix et Linux : Comment obtenir l'utilisation globale du CPU (par exemple 57%) sous Linux