2012-05-14 12 views
24

Desidero che la memoria disponibile venga riportata come percentuale utilizzando la riga di comando di Linux.Comando Linux per la percentuale di memoria libera

+0

Saresti felice con uno script segnalato la quantità di RAM libera? – Levon

+0

No. Voglio la percentuale di RAM libera. –

+0

Mi spiace, intendevo la percentuale, ma come risultato di uno script o di un comando con pipe – Levon

risposta

75

Utilizzando il comando free:

% free 
      total  used  free  shared buffers  cached 
Mem:  2061712  490924 1570788   0  60984  220236 
-/+ buffers/cache:  209704 1852008 
Swap:  587768   0  587768 

Sulla base di questa uscita ci afferra la linea con Mem e utilizzando awk scegliere campi specifici per i nostri calcoli.

Questo segnalerà la percentuale di memoria in uso

% free | grep Mem | awk '{print $3/$2 * 100.0}' 
23.8171 

Questo segnalerà la percentuale di memoria che è gratuito

% free | grep Mem | awk '{print $4/$2 * 100.0}' 
76.5013 

Si potrebbe creare un alias per questo comando o mettere questo in una piccola script di shell. L'uscita specifica potrebbe essere adattata alle vostre esigenze utilizzando i comandi di formattazione per l'istruzione di stampa in queste righe:

free | grep Mem | awk '{ printf("free: %.4f %\n", $4/$2 * 100.0) }' 
+7

'free -t | grep "buffer/cache" | awk '{print $ 4/($ 3 + $ 4) * 100}' 'funziona anche abbastanza bene perché riporta numeri che corrispondono a Mem in htop/top –

+5

@ KevinJalbert's: funziona meravigliosamente, grazie. Possiamo tuttavia omettere il 'grep' e andare direttamente a' awk': 'free | awk '/ buffers \/cache/{print $ 4/($ 3 + $ 4) * 100.0;}' ' – Wrikken

+0

@Wrikken: funziona egregiamente, grazie. Ma possiamo migliorarlo facendo cadere le altre cifre come percentuali troppo libere awk '/ Mem/{printf ("usato:% .2f%"), $ 3/$ 2 * 100}/buffer \/cache/{printf (", buffer:% .2f%"), $ 4/($ 3 + $ 4) * 100}/Swap/{printf (", scambio:% .2f%"), $ 3/$ 2 * 100} '' –

Problemi correlati