在 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
将存储总内存量(以$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 大小。
答案3
最简单的方法是使用自由的命令
free -gh