Pembacaan memori sistem yang dapat dibaca manusia dari CLI?

15

Pada OS X, saya mendapatkan pembacaan memori sistem yang dapat dibaca manusia seperti:

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

mencetak ramah:

4 GB

Meskipun ini di Linux sudah benar:

lshw -class memory

itu output:

size: 4096MiB

Saya perlu menguraikannya dengan menyakitkan dan mencoba membuatnya menjadi seutas yang di atas.

Apakah saya menggunakan perintah yang salah?

Robottinosino
sumber
5
"Aku perlu menguraikannya dengan susah payah" ... Benda jelek besar untuk osx itu tidak menyakitkan? :-)
Patrick
@ Patrick: Saya tidak suka OS X ketika membandingkannya dengan Linux!
Robottinosino

Jawaban:

32

Jika itu yang Anda butuhkan, gunakan saja free:

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

freemengembalikan info memori, -hsaklar memberitahu untuk mencetak dalam format yang dapat dibaca manusia.

terdon
sumber
1
Saya tidak tahu freepunya -hsaklar (baik) . Terima kasih. Sangat menarik bagaimana freedianggap 4.0G(yang saya dapatkan) lebih ramah manusia daripada 4 GB. "Bu, aku lapar, aku ingin 1,0 apel, tolong." Jika ini yang terbaik yang kami miliki di Linux, saya mungkin hanya perlu menguraikan nomor dan mengganti Gdengan GBdiri saya sendiri. Sangat jarang kita melihat HDD, misalnya, diiklankan sebagai "320G" daripada "320 GB". :(
Robottinosino
5
@Robottinosino, ukuran HDD dinyatakan dalam GB (10 ^ 9 byte), sementara memori umumnya diekspresikan dalam GiB (2 ^ 30 byte), 4.0G memberi Anda gambaran tentang presisi. Dengan 4GB, Anda tidak tahu apakah itu persis 4GB (atau 4GiB?) Atau 4,4GB dibulatkan menjadi 4 atau 3,6G dibulatkan menjadi 4.
Stéphane Chazelas
@Robottinosino Jika Anda ingin membulatkannya ke angka yang lebih dapat dibaca manusia dan menambahkan GB, cobafree -h | gawk '/Mem:/{print $2}' | rev | cut -c 2- | rev | xargs printf "%.*fGB\n" 0
aalaap
3

Di Linux,

read x memtotal x < /proc/meminfo

Akan menyimpan jumlah total mem $memorydalam jumlah kiB. Jumlah memori yang tersedia untuk Linux, sama seperti yang dilaporkan oleh free.

Jika Anda ingin RAM yang terpasang, Anda dapat melakukan hal-hal seperti:

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

Untuk mendapatkan ukuran dalam MiBs. Atau

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

Jika Anda menginginkan ukuran dalam GiB.

Stéphane Chazelas
sumber
0

Cara paling sederhana adalah menggunakan perintah gratis

free -gh
vlad
sumber
Anda perlu menguraikannya juga.
countermode