Лучший способ получить ramtotal в busybox bin / sh? - PullRequest
0 голосов
/ 21 ноября 2018

Итак, что-то настолько простое, сколько оперативной памяти установлено на текущем компьютере?Я запускаю образ pxe, встроенный в buildroot, чтобы получить системные спецификации от систем при сетевой загрузке.Но одна вещь, кажется, торчит мне.Как эффективно и надежно считать оперативную память в каждой возможной системе.

Я даю вам худший код, когда-либо сделанный, ему 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.Будущее доказательство ftw.И в том-то и дело, что код буквально работал, и поэтому не было никакой причины, чтобы заставить его исчезнуть.

Сегодня я пытаюсь создать новый код, который отлично работал на моем 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}'`
...