Une doublure pour afficher l'utilisation du CPU, de la RAM et du disque dur

15

J'ai vu quelques articles vouloir la même chose en ce qui concerne l'utilisation, mais les réponses se réfèrent TOUJOURS à l'installation d'un outil tiers.

Je ne veux rien installer.

Des doublures? Ce qui suit serait une belle sortie:

CPU 11% RAM 20% HDD 85%
Karl Morrison
la source
L'utilisation du disque dur est-elle le pourcentage de sa capacité ou de son occupation?
Byte Commander
@ByteCommander Both? :) Sur une note sérieuse, la capacité cependant. Si les deux, ce serait bien.
Karl Morrison
Soupir .......: - /
Byte Commander
@ByteCommander Par capacité, je veux dire "à quel point c'est complet" si je n'étais pas clair :)
Karl Morrison

Réponses:

28

Vous pouvez utiliser ceci

echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", $3/$2*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"

La sortie est

CPU 7.4% RAM 33.9% HDD 94%
MKay
la source
2
la partie HD va sucer si vous avez plusieurs partitions.
coteyr
1
df -h /une partie de la ligne de commande affiche les statistiques sur la /partition. Vous pouvez répéter la df -hcommande et remplacer /par le point de montage que vous devez surveiller.
MKay
1
Ça ne marche pas pour moi. Le CPU est toujours à 91%, je ne sais pas d'où ça vient. // Et la RAM comprend des tampons et du cache, ce qui donne l'impression qu'elle est épuisée. J'utilise 97,8% de RAM, mais 67,5% sont toujours disponibles.
Oskar Skog
2
@OskarSkog Votre topva bien. L'utilisation du processeur ne peut pas être mesurée au moment actuel, elle doit être mesurée sur une courte période de temps. Lorsqu'il topexécute la première itération, il affiche l'utilisation moyenne depuis le dernier redémarrage. En commençant par la deuxième itération, il montre l'utilisation actuelle réelle depuis l'itération précédente. Et si vous avez des problèmes avec la localisation, vous pouvez mettre LC_ALL=Cen avant la commande pour utiliser la localisation anglaise par défaut (formats numériques, etc., pas la langue).
Byte Commander
2
@MKay: Vous pouvez remplacer top -bn1 | grep "Cpu(s)"par top -bn2 | grep "Cpu(s)" | tail -n1. Le premier affichera une moyenne à long terme, comme l'a souligné Byte Commander.
Oskar Skog
7

Pour l'utilisation du processeur (moyenne de (user+system)/(user+system+idle)temps sur 0,1 seconde):

(grep 'cpu ' /proc/stat;sleep 0.1;grep 'cpu ' /proc/stat)|awk -v RS="" '{print "CPU "($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5)"%"}'

Pour l'utilisation de la RAM ( (total-available)/total):

awk '/MemTotal/{t=$2}/MemAvailable/{a=$2}END{print 100-100*a/t"%"}' /proc/meminfo

Pour l'utilisation du disque dur (uniquement pour le volume monté comme /):

df | awk '/ \/$/{print "HDD "$5}'
Byte Commander
la source
Intéressant, il y a moins de mémoire disponible que ce que `free -m | tête -n3 | tail -n1 'signale la mémoire libre.
Oskar Skog
@OskarSkog Pouvez-vous partager votre sortie de cette commande? Pour moi, il imprime simplement la ligne Swap total / utilisé / gratuit, ce qui n'est pas pertinent ici. Peut-être que vous vouliez dire autre chose, ou que votre freecommande utilise toujours l'ancien format de sortie avec des tampons / ligne de cache / - séparés ...
Byte Commander
Mon gratuit utilise l'ancien format: oskog97.com/sshin/free-output.png Qu'est-ce qui a changé?
Oskar Skog
3
@OskarSkog La ligne "- / + buffers / cache" a été supprimée et il y a maintenant une colonne supplémentaire "disponible" dans la ligne "Mem" à la place. De man free: " Estimation de la quantité de mémoire disponible pour démarrer de nouvelles applications, sans échange. Contrairement aux données fournies par le cache ou les champs libres, ce champ prend en compte le cache de page et également que toutes les dalles de mémoire récupérables ne seront pas récupérées en raison d'éléments en cours d'utilisation MemAvailable dans / proc / meminfo, disponible sur les noyaux 3.14, émulé sur les noyaux 2.6.27+, sinon le même que gratuit) "
Byte Commander