linux - 如何找出适合由 shell 脚本解析的 linux 机器的总物理内存 (RAM)?

标签 linux ram memory-size

我正在键入一个 shell 脚本来找出一些 RHEL linux 机器中的总物理内存。

首先我要强调的是,我对内核识别的总物理内存感兴趣,而不仅仅是可用内存。因此,请避免建议阅读 /proc/meminfo 或使用 freetopsar 的答案命令 -- 在所有这些情况下,它们的“total memory”值表示“可用内存”。

首先想到的是阅读启动内核消息:

Memory: 61861540k/63438844k available (2577k kernel code, 1042516k reserved, 1305k data, 212k init)

但在某些 linux 机器中,由于使用了 EMC2 的 PowerPath 软件及其在内核启动中的 flooding 引导消息,因此该有用的引导内核消息不可用,甚至在 /var/log/dmesg 文件。

第二个选项是 dmidecode 命令(由于某些旧内核和架构的限制,我被警告内核识别的 RAM 和实际 RAM 可能不匹配)。 --memory 选项简化了脚本,但我意识到该命令的旧版本没有 --memory 选项。

我最后的机会是 getconf 命令。它报告内存页面大小,而不是物理页面的总数——_PHYS_PAGES 系统变量似乎是可用的物理页面,而不是总物理页面。

# getconf -a | grep PAGES
PAGESIZE                           4096
_AVPHYS_PAGES                      1049978
_PHYS_PAGES                        15466409

我的问题:有没有其他方法可以获取物理内存总量,适合用shell脚本解析?

最佳答案

你试过 cat/proc/meminfo 吗?然后你可以 awkgrep 找出你想要的,MemTotal 例如

awk '/MemTotal/ {print $2}' /proc/meminfo

cat /proc/meminfo | grep MemTotal

关于linux - 如何找出适合由 shell 脚本解析的 linux 机器的总物理内存 (RAM)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20348007/

相关文章:

linux - g++ 将 .a 文件及其依赖项链接到静态 .so

linux - bochs 从软盘启动 FLOPPY : read() on floppy image returns 0

c++ - Fd 大于 1024 时 Select 和 FD_SET 的行为

macos - 如何在 OS X 10.6.8 中为 MATLAB 2011a 分配更多内存?

java - 以编程方式计算值类型的大小

c - 数据包过滤、IpTables 和路由

c - 主存中的操作系统内核和进程

c - 例如,在 C 中定义变量时,该变量的内存地址存储在哪里?

arm - 如何检查应用程序的 cortex m3 SRAM 使用情况