Вот сценарий bash, который вычисляет 80% всей доступной оперативной памяти в виде целого числа в системе Linux:
server_ram_mb=$(awk '/MemTotal/ {printf( "%.2f\n", $2 / 1024)}' /proc/meminfo)
echo "($server_ram_mb * 0.8)/1" | bc > /tmp/output
eighty_percent_ram_mb=$(cat /tmp/output)
Однако есть несколько вещей, которые мне в этом не нравятся:
bc
, который не установлен по умолчанию на всех дистрибутивах LinuxКак я могу переписать / упростить это, чтобы избежать этих проблем?
eighty_percent_ram_mb=$(free -m | awk 'NR==2{printf "%d", $2*0.8 }')
Должен сработать :)
Кто-то только что написал мне об этом в Твиттере!
eighty_percent_ram_mb=$(free -m | awk 'NR==2{printf "%.0f\n", $2*0.8 }')
Я попробовал, и это сработало.