那么,很简单,当前机器上安装了多少只ram?我运行在buildroot中内置的pxe映像,以从网络启动中的系统获取系统规范。但是,似乎有一件事情留给了我。您如何有效,可靠地计算每个可能的系统上的内存。
我给你做过最糟糕的代码,它已经6年了,我对此感到非常尴尬。
ramtotal=0
ramsize=1
while test $ramsize -le 10000; do
ramcount=`dmidecode --type memory | grep -v Enabled | grep -v Installed | grep -v Maximum | grep "Size:" | grep "MB" | grep -c " $ramsize "`
ramup=$(( ramsize * ramcount ))
ramtotal=$(( ramtotal + ramup ))
ramsize=$(( ramsize * 2 ))
done
好吧,我的代码可以生存足够长的时间,以便能够计算大小为2 ^ 10000的ram芯片吗?未来证明。就是这样,代码实际上就可以正常工作,因此没有任何理由使它消失。
今天,我正在尝试一个新代码,该代码可以在我的Ubuntu Server上正常工作,但不能用于busybox。
ramtotal=`dmidecode --type memory | grep -v Enabled | grep -v Installed | grep -v Maximum | grep "Size:" | grep "MB" | grep -o -P '(?<=\:\ ).*(?=\ MB)' | awk '{s+=$1} END {print s}'`