我知道你们中的一些人可能会觉得我的问题很愚蠢,但我需要知道一台 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"}'