在 Bash 中以整数形式计算 Linux 上总可用内存的百分比

在 Bash 中以整数形式计算 Linux 上总可用内存的百分比

下面是一个 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 }')

我尝试了一下并且成功了。

相关内容