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
作为 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