下面是一个 bash 脚本,它以整数形式计算 Linux 机器上可用 RAM 总量的 80%:
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 发行版都默认安装
我该如何重写/简化它以避免这些问题?
答案1
eighty_percent_ram_mb=$(free -m | awk 'NR==2{printf "%d", $2*0.8 }')
应该可以完成工作:)
答案2
有人刚刚在推特上给我发了这条消息!
eighty_percent_ram_mb=$(free -m | awk 'NR==2{printf "%.0f\n", $2*0.8 }')
我尝试了一下并且成功了。