Lettura della memoria di sistema leggibile dall'uomo dalla CLI?


15

Su OS X, ottengo una bella memoria di sistema leggibile dall'uomo che legge in questo modo:

printf -v system_memory \
          "$(system_profiler SPHardwareDataType \
             | awk -F ': ' '/^ +Memory: /{print $2}')"
echo "$system_memory"

stampa l'amichevole:

4 GB

Anche se questo su Linux è corretto:

lshw -class memory

produce:

size: 4096MiB

Devo analizzarlo dolorosamente e cercare di trasformarlo in una stringa bella come quella sopra.

Sto usando il comando sbagliato?


5
"Devo analizzarlo dolorosamente" ... Quella brutta cosa per osx non è dolorosa? :-)
Patrick

@Patrick: non mi piace OS X quando lo paragono a Linux!
Robottinosino,

Risposte:


32

Se questo è tutto ciò che serve, basta usare free:

$ free -h | gawk  '/Mem:/{print $2}'
7.8G

freerestituisce informazioni sulla memoria, l' -hinterruttore dice di stampare in un formato leggibile dall'uomo.


1
Non sapevo che freeavesse un -hinterruttore (carino) . Grazie. Molto interessante il modo in cui freeconsidera 4.0G(che è quello che ottengo) più amico dell'uomo di 4 GB. "Mamma, ho fame, vorrei 1.0 mela, per favore." Se questo è il migliore che abbiamo su Linux, probabilmente dovrei semplicemente analizzare il numero e sostituirlo Gcon GBme stesso. Molto raramente vediamo HDD, ad esempio pubblicizzati come "320G" anziché "320 GB". :(
Robottinosino,

5
@Robottinosino, le dimensioni dell'HDD sono espresse in GB (10 ^ 9 byte), mentre la memoria è generalmente espressa in GiB (2 ^ 30 byte), 4.0G ti dà un'idea della precisione. Con 4 GB, non sai se sono esattamente 4 GB (o 4GiB?) O 4,4 GB arrotondati per difetto a 4 o 3,6 G arrotondati per eccesso a 4.
Stéphane Chazelas

@Robottinosino Se vuoi arrotondarlo a un numero più leggibile dall'uomo e aggiungere GB, provafree -h | gawk '/Mem:/{print $2}' | rev | cut -c 2- | rev | xargs printf "%.*fGB\n" 0
aalaap

3

Su Linux,

read x memtotal x < /proc/meminfo

Memorizzerebbe la quantità totale di mem in $memoryin numero di kiB. Questa è la quantità di memoria disponibile per Linux, la stessa riportata da free.

Se vuoi la RAM installata, puoi fare cose come:

awk '{s+=$0};END{print s}' /sys/bus/mc*/devices/dimm*/size

Per ottenere la dimensione in MiB. O

awk '{s+=$0};END{printf "%.2gG\n", s/1024}' /sys/bus/mc*/devices/dimm*/size

Se si desidera la dimensione in GiB.


0

Il modo più semplice è usare il comando gratuito

free -gh

Devi analizzare anche quello.
contromodale
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.