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

tle*_*den 2 linux bash

下面是一个 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)
Run Code Online (Sandbox Code Playgroud)

然而,有一些我不喜欢的事情:

  • 它写入临时文件(我尝试将其设置为变量但无法解决语法问题)
  • 它需要bc,但并非所有 Linux 发行版都默认安装

我如何重写/简化它以避免这些问题?

小智 5

eighty_percent_ram_mb=$(free -m | awk 'NR==2{printf "%d", $2*0.8 }')
Run Code Online (Sandbox Code Playgroud)

应该完成这项工作:)