【发布时间】:2012-05-22 02:14:56
【问题描述】:
我想使用 Linux 命令行以百分比形式报告可用内存。
我使用了free 命令,但那只是给我数字,没有百分比选项。
【问题讨论】:
我想使用 Linux 命令行以百分比形式报告可用内存。
我使用了free 命令,但那只是给我数字,没有百分比选项。
【问题讨论】:
使用free 命令:
% free
total used free shared buffers cached
Mem: 2061712 490924 1570788 0 60984 220236
-/+ buffers/cache: 209704 1852008
Swap: 587768 0 587768
基于此输出,我们使用 Mem 抓取行,并使用 awk 选择特定字段进行计算。
这将报告正在使用的内存百分比
% free | grep Mem | awk '{print $3/$2 * 100.0}'
23.8171
这将报告可用内存的百分比
% free | grep Mem | awk '{print $4/$2 * 100.0}'
76.5013
你可以为这个命令创建一个别名或者把它放到一个小的 shell 脚本中。可以使用打印语句的格式化命令来根据您的需要定制特定的输出:
free | grep Mem | awk '{ printf("free: %.4f %\n", $4/$2 * 100.0) }'
【讨论】:
free -t | grep "buffers/cache" | awk '{print $4/($3+$4) * 100}' 也可以很好地报告与 htop/top 中的 Mem 匹配的数字
grep 并直接转到 awk:free | awk '/buffers\/cache/{print $4/($3+$4) * 100.0;}'
free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'
free -m时,我没有第三行“-/+ buffers/cache:”
free | awk '/Mem/{printf("Mem used: %.1f%"), $3/($2+.000000001)*100} /buffers\/cache/{printf(", buffers: %.1f%"), $4/($3+$4)+.000000001*100} /Swap/{printf(", swap: %.1f%"), $3/($2+.000000001)*100}'; 不被零除