[英]BASH: check for amount of memory installed on a system as sanity check
作為bash安裝腳本的一部分,我希望腳本能夠進行完整性檢查,確保目標計算機至少安裝了一定量的內存。 請注意,我並不特別擔心當前使用或分配或可用的內存量 - 就我的目的而言,系統中存在超過XXX GB的內存就足夠了。 我目前的計划(有效,但似乎可能是kludge-y?)是按照以下方式做的事情:
MEM=`free -m | grep Mem | awk '{print $2}'`
然后在$ MEM變量的bash腳本中進行大於/小於比較。 正如我所說,這有效......但是如果有更優雅的方式來做其他人會建議的話,那只是好奇......
實際上,這不是 kludgy,它是在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 $2}' /proc/meminfo) ; echo $totalk
8291816
但是,當然,同樣的警告適用於“文件”的格式,因為它可能在將來發生變化。
想想看,你也可以簡化你所擁有的東西,因為管道中不需要單獨的grep
:
$ totalm=$(free -m | awk '/^Mem:/{print $2}') ; echo $totalm
8097
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.