Читання людиною системної пам'яті з CLI?


15

В OS X я отримую приємне читання людською системною пам'яттю таким чином:

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

друкує дружні:

4 GB

Хоча це в Linux правильно:

lshw -class memory

він виводить:

size: 4096MiB

Мені потрібно болісно розібрати його і спробувати перетворити його в струну так само приємно, як та, яка була вище.

Чи використовую я неправильну команду?


5
"Мені потрібно болісно проаналізувати" ... Ця велика потворна річ для Osx не болісна? :-)
Патрік

@Patrick: Мені не подобається OS X при порівнянні з Linux!
Robottinosino

Відповіді:


32

Якщо це все, що вам потрібно, просто використовуйте free:

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

freeповертає інформацію про пам'ять, -hкомутатор повідомляє її друкувати у читаному для людини форматі.


1
Я не знав, що freeмав (приємний) -hперемикач. Спасибі. Дуже цікаво , як freeДімс 4.0G(який є те , що я отримую) більше осіб доброзичливий , ніж 4 GB. "Мамо, я голодна, мені б хотілося 1,0 яблука, будь ласка". Якщо це найкраще , що ми маємо на Linux, я , ймовірно , слід просто розібрати номер і замінити Gз GBсобою .. Дуже рідко ми бачимо жорстких дисків, наприклад, рекламується як «320G» , а не «320 ГБ». :(
Robottinosino

5
@Robottinosino, розміри жорсткого диска виражаються в ГБ (10 ^ 9 байт), тоді як пам'ять, як правило, виражається в GiB (2 ^ 30 байт), 4.0G дає вам уявлення про точність. З 4 Гб ви не знаєте, чи це точно 4 ГБ (або 4 Гбіт?) Або 4,4 ГБ, округлене до 4 або 3,6 Г, округлене до 4.
Stéphane Chazelas

@Robottinosino Якщо ви хочете закріпити його на більш читабельну для людини кількість і додати GB, спробуйтеfree -h | gawk '/Mem:/{print $2}' | rev | cut -c 2- | rev | xargs printf "%.*fGB\n" 0
aalaap

3

У Linux,

read x memtotal x < /proc/meminfo

$memoryЗбереже загальна кількість пам'яті в кількості кіБ. Це об'єм пам'яті, доступної для Linux, такий самий, як повідомлялося в free.

Якщо ви хочете встановити оперативну пам’ять, ви можете зробити такі речі:

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

Щоб отримати розмір в МіБ. Або

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

Якщо ви хочете розмір в GiB.


0

Найпростіший спосіб - використання вільної команди

free -gh

Ви також повинні проаналізувати це.
контрмоде
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.