我想以百分比形式显示可用内存。我很确定我没有显示可用内存,而是显示已用内存。还是我错了?
mem=`free -m | awk 'NR ==2{printf $3,$2,$3*100/$2}'`
echo $mem
答案1
如果要以百分比形式显示可用内存量,请将第 4 列(可用)除以第 2 列(总计),并将结果乘以 100。
例如:
[user@localhost ~]$ free | awk '/^Mem/ { printf("free: %.2f %\n", $4/$2 * 100.0) }'
free: 97.32 %
如果要显示已使用的金额,可以将第 3 列(已使用)除以第 2 列(总计),然后将结果乘以 100。
[user@localhost ~]$ free | awk '/^Mem/ { printf("Used: %.2f %\n", $3/$2 * 100.0) }'
Used: 2.75 %
您可以使用 %g 四舍五入到指定的有效数字位数。
例如,如果您只需要整数而不是浮点值,则可以将指定的浮点位数更改为 0(零)。在第一个示例中,%.2f 表示 2 个浮点值。
这是一个浮点值为零的示例:
[user@localhost ~]$ free | awk '/^Mem/ { printf("Used: %.0f %\n", $3/$2 * 100.0) }'
Used: 3 %
这也在这里得到了回答:
https://stackoverflow.com/questions/10585978/linux-command-for-percentage-of-memory-that-is-free
答案2
尝试这个,
free | awk '/^Mem/ { a=(($3-$7)/$2 * 100); print a"% of Memory used" }'
3.43143% of Memory used
free | awk '/^Mem/ { a=(($4+$7)/$2 * 100); print a"% of Memory free" }'
96.5662% of Memory free
free | awk '/^Mem/ { a=(($7)/$2 * 100); print a"% of Memory cached" }'
80.4204% of Memory cached
注意:交叉检查值glances