人类可读的系统内存从 CLI 读取?

人类可读的系统内存从 CLI 读取?

在 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

我需要痛苦地解析它并尝试将其变成与上面的字符串一样好的字符串。

我使用了错误的命令吗?

答案1

如果这就是您所需要的,只需使用free

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

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

答案2

在 Linux 上,

read x memtotal x < /proc/meminfo

将存储总内存量(以$memorykiB 为单位)。这是 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 大小。

答案3

最简单的方法是使用自由的命令

free -gh

相关内容