使用 bash 获取完整的物理 Ram 内存

使用 bash 获取完整的物理 Ram 内存

我知道你们中的一些人可能会觉得我的问题很愚蠢,但我需要知道一台 centos 机器上安装了多少内存。是的,我知道可以使用以下命令轻松完成

awk'/MemTotal/{打印$2}'/proc/meminfo

然而问题是所显示的内存并不是我真正需要的。显示的值总是小于预期,因为一些 RAM 被用来加载内核。因此 512 MB RAM 服务器总是会显示略小于 524288 kb。

我需要全部物理内存的原因很简单。我需要通过我的 bash 脚本自动修改机器上的设置。因此,如果服务器总共有 512 MB 内存,则使用一组设置,如果是 1GB,则使用另一组设置.....

我无法拿上述命令返回的值来冒险,因为这个值在不同系统之间是不同的。

有没有什么好的有效选择,伙计们……

亲切的问候

答案1

给你...来自我的更大的脚本:记录服务器详细信息

# Calculate installed RAM
dmidecode -t 17 | awk '( /Size/ && $2 ~ /^[0-9]+$/ ) { x+=$2 } END{ print "\t" "Installed Ram: " x "MB"}'

输出:安装内存:28672MB(或除以 1024)

答案2

不幸的是,dmidecore 需要 root 权限。

检索值的另一种方法比 /proc/meminfo 中的 MemTotal 更准确:

$ dmesg | gawk '/BIOS-e820/&&/usable/{tot+=strtonum("0x"$4)-strtonum("0x"$2)}END{print "Total RAM: "tot/1048576" MB"}'

相关内容