Czytanie pamięci systemowej czytelne dla człowieka z CLI?

15

W systemie OS X otrzymuję przyjemny odczyt pamięci systemowej czytelny dla człowieka :

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

drukuje przyjazny:

4 GB

Chociaż jest to poprawne w systemie Linux:

lshw -class memory

generuje:

size: 4096MiB

Muszę go boleśnie przeanalizować i spróbować zrobić z niego tak samo piękny sznurek jak powyższy.

Czy używam niewłaściwego polecenia?

Robottinosino
źródło
5
„Muszę to boleśnie przeanalizować”… Ta wielka brzydka rzecz dla osx nie jest bolesna? :-)
Patrick
@Patrick: Nie lubię OS X podczas porównywania go z Linuksem!
Robottinosino

Odpowiedzi:

32

Jeśli to wszystko, czego potrzebujesz, po prostu użyj free:

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

freezwraca informacje o pamięci, -hprzełącznik każe drukować w formacie czytelnym dla człowieka.

terdon
źródło
1
Nie wiedziałem, że freemiałem (fajny) -hprzełącznik. Dzięki. Bardzo ciekawe, jak freeuważa 4.0G(co otrzymuję) bardziej przyjazne dla człowieka niż 4 GB. „Mamo, jestem głodna. Poproszę 1 jabłko, proszę”. Jeśli jest to najlepsze, co mamy w Linuksie, prawdopodobnie powinienem po prostu przeanalizować numer i wymienić Ggo na GBsiebie. Bardzo rzadko widzimy dyski twarde, na przykład reklamowane jako „320G”, a nie „320 GB”. :(
Robottinosino
5
@Robottinosino, rozmiary HDD są wyrażane w GB (10 ^ 9 bajtów), podczas gdy pamięć jest ogólnie wyrażana w GiB (2 ^ 30 bajtów), 4.0G daje wyobrażenie o precyzji. Z 4 GB nie wiesz, czy to dokładnie 4 GB (czy 4GiB?) Lub 4,4 GB zaokrąglone w dół do 4 lub 3,6G zaokrąglone w górę do 4.
Stéphane Chazelas
@Robottinosino Jeśli chcesz go zaokrąglić do liczby czytelniejszej dla człowieka i dodać GB, spróbujfree -h | gawk '/Mem:/{print $2}' | rev | cut -c 2- | rev | xargs printf "%.*fGB\n" 0
aalaap
3

W systemie Linux

read x memtotal x < /proc/meminfo

Przechowuje całkowitą kwotę mem $memoryw liczbie kiB. To ilość pamięci dostępna dla Linuksa, taka sama jak podana przez free.

Jeśli chcesz zainstalowaną pamięć RAM, możesz wykonywać następujące czynności:

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

Aby uzyskać rozmiar w MiB. Lub

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

Jeśli chcesz rozmiar w GiB.

Stéphane Chazelas
źródło
0

Najprostszym sposobem jest użycie bezpłatnego polecenia

free -gh
Vlad
źródło
Musisz to również przeanalizować.
kontr-