BASH:检查系统上安装的内存量作为完整性检查

BASH: check for amount of memory installed on a system as sanity check

作为 bash 安装脚本的一部分,我希望脚本能够检查目标计算机是否至少安装了给定数量的内存。请注意,我并不特别担心当前使用、分配或可用的内存量——出于我的目的,系统中存在超过 XXX GB 的 RAM 就足够了。我目前的计划(可行,但似乎有点乱七八糟?)是按照以下方式做一些事情:

MEM=`free -m  | grep Mem | awk '{print }'`

然后在 bash 脚本中对 $MEM 变量进行 greater-than/less-than 比较。正如我所说,这行得通......但只是好奇是否有其他人建议的更优雅的方式来做到这一点......

实际上,不是笨拙,它是在 UNIX 领域由来已久的做事方式,在管道中使用简单的工具来构建更复杂的东西。

唯一 需要注意的是 free -m 的输出格式是否会发生变化。您可能认为这种情况不会经常发生,但是作为使用各种命令行工具的输出开发性能监控应用程序的人,这种情况发生的频率比您想象的要高。

如果你想要更少的管道,你可以直接去 /proc/meminfo 得到你想要的:

$ cat /proc/meminfo
MemTotal:        8291816 kB
MemFree:         3136804 kB
HighTotal:             0 kB
HighFree:              0 kB
LowTotal:        8291816 kB
LowFree:         3136804 kB
SwapTotal:       1310720 kB
SwapFree:        1077244 kB

因此,如果您对总内存感兴趣,可以使用:

$ totalk=$(awk '/^MemTotal:/{print }' /proc/meminfo) ; echo $totalk
8291816

但是,当然,同样的警告也适用于 "file" 的格式,因为它可能会在未来发生变化。

想想看,您还可以简化您 拥有的东西, 因为管道中不需要单独的 grep:

$ totalm=$(free -m | awk '/^Mem:/{print }') ; echo $totalm
8097