那么,这么简单的事情,当前机器安装了多少内存?我运行一个内置于 buildroot 的 pxe 映像,以从网络启动的系统中获取系统规范。但是,有一件事似乎对我很重要。您如何有效可靠地计算每个可能系统上的 ram。
我给你有史以来最糟糕的代码,它已经 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 芯片。未来证明ftw。就是这样,代码确实可以正常工作,因此没有任何理由让它消失。
今天,我正在尝试一个新代码,它在我的 Ubuntu 服务器上运行良好,但不适用于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}'`