Un liner per mostrare l'utilizzo di CPU, RAM e HDD


15

Ho visto alcuni post che vogliono lo stesso per quanto riguarda l'utilizzo, tuttavia le risposte SEMPRE si riferiscono all'installazione di alcuni strumenti di terze parti.

Non voglio installare nulla.

Qualche fodera? Di seguito sarebbe un bel risultato:

CPU 11% RAM 20% HDD 85%

L'utilizzo dell'HDD è in percentuale quanto è pieno o quanto è occupato?
Byte Commander

@ByteCommander Both? :) Una nota seria, la capacità però. Se entrambi sarebbe carino.
Karl Morrison,

Sigh .......: - /
Byte Commander

@ByteCommander Per capacità intendo "quanto è pieno" se non fossi chiaro :)
Karl Morrison,

Risposte:


29

Puoi usare questo

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)}'`"

L'output è

CPU 7.4% RAM 33.9% HDD 94%

2
la parte HD farà schifo se hai molte partizioni.
Coteyr,

1
df -h /parte della riga di comando mostra le statistiche sulla /partizione. È possibile ripetere il df -hcomando e sostituire /con il punto di montaggio che è necessario monitorare.
MKay,

1
Non funziona per me. La CPU è sempre del 91%, non ho idea da dove la ottenga. // E la RAM include buffer e cache facendola sembrare esaurita. Uso il 97,8% di RAM, ma il 67,5% è ancora gratuito.
Oskar Skog,

2
@OskarSkog Va tutto topbene. L'utilizzo della CPU non può essere misurato al momento attuale, ma deve essere misurato in un breve intervallo di tempo. Quando topesegue la prima iterazione, mostra l'utilizzo medio dall'ultimo riavvio. A partire dalla seconda iterazione mostra l'attuale utilizzo attuale dalla precedente iterazione. E se hai problemi con la localizzazione, puoi mettere LC_ALL=Cdavanti al comando per usare la localizzazione inglese predefinita (formati numerici ecc., Non lingua).
Byte Commander

2
@MKay: potresti voler sostituire top -bn1 | grep "Cpu(s)"con top -bn2 | grep "Cpu(s)" | tail -n1. Il primo mostrerà una media a lungo termine, come sottolineato da Byte Commander.
Oskar Skog,

7

Per l'utilizzo della CPU (media di (user+system)/(user+system+idle)oltre 0,1 secondi):

(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)"%"}'

Per l'utilizzo della RAM ( (total-available)/total):

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

Per l'utilizzo dell'HDD (solo del volume montato come /):

df | awk '/ \/$/{print "HDD "$5}'

Interessante, c'è meno memoria disponibile rispetto a ciò che `free -m | head -n3 | tail -n1 'riporta come memoria libera.
Oskar Skog,

@OskarSkog Puoi condividere l'output di quel comando? Per me stampa semplicemente la linea Scambia totale / usato / libero, che qui non è rilevante. Forse intendevi qualcos'altro, o il tuo freecomando usa ancora il vecchio formato di output con - / + buffer / riga cache separati ...
Byte Commander

My free utilizza il vecchio formato: oskog97.com/sshin/free-output.png Che cosa è cambiato?
Oskar Skog,

3
@OskarSkog La riga "- / + buffers / cache" è stata rimossa e ora c'è invece una colonna aggiuntiva "disponibile" nella riga "Mem". Da man free: " Stima della quantità di memoria disponibile per l'avvio di nuove applicazioni, senza scambio. A differenza dei dati forniti dalla cache o dai campi liberi, questo campo prende in considerazione la cache della pagina e anche che non tutte le lastre di memoria recuperabili verranno recuperate a causa di elementi essendo in uso MemDisponibile in / proc / meminfo, disponibile su kernel 3.14, emulato su kernel 2.6.27+, altrimenti uguale a gratuito) "
Byte Commander
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.