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

这里是一个bash脚本,它计算Linux机器上可用整数的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) 

不过,有几件事我不喜欢:

  • 它写入临时文件(我试图将其设置为一个variables,并不能通过语法问题)
  • 它需要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 }') 

我试了一下,它的工作。

随着GNU bash 4:

 declare -i eighty_percent_ram_mb # set integer attribute while read -rabc; do [[ $a =~ ^MemTotal: ]] && mem=$b; done < /proc/meminfo eighty_percent_ram_mb=$mem/100*80/1024