Vom Menschen lesbarer Systemspeicher, der von der CLI gelesen wird?

15

Unter OS X erhalte ich einen schönen lesbaren Systemspeicher, der wie folgt aussieht :

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

druckt das freundliche aus:

4 GB

Obwohl dies unter Linux richtig ist:

lshw -class memory

es gibt aus:

size: 4096MiB

Ich muss es schmerzhaft analysieren und versuchen, es zu einer Zeichenfolge zu machen, die so schön ist wie die oben genannte.

Benutze ich den falschen Befehl?

Robottinosino
quelle
5
"Ich muss es schmerzlich analysieren" ... Das große hässliche Ding für osx ist nicht schmerzhaft? :-)
Patrick
@Patrick: Ich mag OS X nicht, wenn ich es mit Linux vergleiche!
Robottinosino

Antworten:

32

Wenn das alles ist, was Sie brauchen, verwenden Sie einfach free:

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

freeGibt die Speicherinformationen zurück und der -hSchalter weist ihn an, in einem für Menschen lesbaren Format zu drucken.

terdon
quelle
1
Ich wusste nicht, freehatte einen (schönen) -hSchalter. Vielen Dank. Sehr interessant, wie freeerachtet 4.0G(was ich bekomme) menschlicher als 4 GB. "Mama, ich habe Hunger, ich hätte gerne 1.0 Apfel, bitte." Ist dies der beste , den wir auf Linux haben, sollte ich wahrscheinlich analysieren nur die Anzahl und ersetzen Gmit GBmir .. Sehr selten tun wir HDDs zu sehen, zum Beispiel, beworben als „320G“ statt „320 GB“. :(
Robottinosino
5
@Robottinosino, HDD-Größen werden in GB (10 ^ 9 Bytes) angegeben, während der Speicher im Allgemeinen in GiB (2 ^ 30 Bytes) angegeben wird. 4.0G gibt Ihnen eine Vorstellung von der Genauigkeit. Mit 4 GB wissen Sie nicht, ob es genau 4 GB (oder 4 GB?) Oder 4,4 GB, abgerundet auf 4 oder 3,6 GB, auf 4 sind.
Stéphane Chazelas
@Robottinosino Wenn Sie es auf eine besser lesbare Zahl GBfree -h | gawk '/Mem:/{print $2}' | rev | cut -c 2- | rev | xargs printf "%.*fGB\n" 0
abrunden
3

Unter Linux

read x memtotal x < /proc/meminfo

Würde den gesamten Mem-Betrag in speichern $memory in kiB . Das ist die Menge an Arbeitsspeicher, die Linux zur Verfügung steht, genau wie von gemeldetfree .

Wenn Sie den installierten Arbeitsspeicher benötigen, können Sie Folgendes tun:

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

Um die Größe in MiBs zu erhalten. Oder

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

Wenn Sie die Größe in GiB wollen.

Stéphane Chazelas
quelle
0

Der einfachste Weg ist die Verwendung eines freien Befehls

free -gh
vlad
quelle
Sie müssen das auch analysieren.
Gegenmodus