从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

@Patrick:与Linux相比,我不喜欢OS X!
Robottinosino

Answers:


32

如果仅此而已,请使用free

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

free返回内存信息,该-h开关告诉它以人类可读的格式打印。


1
我不知道free有一个(不错的)-h开关。谢谢。非常有趣的是,我free认为4.0G(这就是我得到的)对人类更友好4 GB。“妈妈,我饿了,请给我1.0苹果。” 如果这是我们在Linux上最好的,我也许应该只是解析数出并更换GGB自己..极少数情况下我们看到的硬盘驱动器,例如,标榜为“320G”,而不是“320 GB”。:(
Robottinosino

5
@ Robottinosino,HDD大小以GB(10 ^ 9字节)表示,而内存通常以GiB(2 ^ 30字节)表示,4.0G使您对精度有所了解。有了4GB,您不知道它到底是4GB(或4GiB?)还是4.4GB向下舍入到4,还是精确到3.6G舍入到4。
StéphaneChazelas 2013年

@Robottinosino如果您想将其四舍五入为更易于GBfree -h | gawk '/Mem:/{print $2}' | rev | cut -c 2- | rev | xargs printf "%.*fGB\n" 0
理解的

3

在Linux上,

read x memtotal x < /proc/meminfo

$memory将以kiB数存储总内存量。这就是Linux可用的内存量,与报道的相同free

如果要安装RAM,可以执行以下操作:

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

获取MiB中的大小。要么

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

如果要在GiB中显示尺寸。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.