无法提取正确使用的内存

时间:2015-12-07 15:34:06

标签: linux bash math

目前正在创建一个脚本,该脚本将记录当前每秒使用的CPU和内存,直到您点击一个键,然后通过gnuplot绘制结果图形。我似乎无法弄清楚如何提取正确使用的内存百分比。我目前关注的命令是......

echo "(free | grep Mem | awk '${print $3/$2 * 100"%"}')"

显示当前可用的内存量,并给出以下结果... 恩。

97.0305%
98.06%
94.07%
87.950%

我不需要显示免费的金额,而是使用当前的金额。取这个数字并从100中减去它(将其设置为变量或其他东西)应该非常简单,但我想要的是将它保存在我上面的单行echo命令中。有什么建议?谢谢

2 个答案:

答案 0 :(得分:2)

当然,这很容易

echo "(free | grep Mem | awk '${print (100 - ( ($3/$2) * 100) ) "%"}')"

我觉得你不需要echo "..."包装器,试试

free | grep Mem | awk '{print (100 - ( ($3/$2) * 100) ) "%"}'

你不需要grep ;-),试试

free | awk '/Mem/{print (100 - ( ($3/$2) * 100) ) "%"}'

并且具有绝对最小的代码,正如Karoly Horvath提醒我们的那样(在这种情况下)“所有括号都是不必要的”,你可以使用

free | awk '/Mem/{print 100 - $3/$2 * 100 "%"}'

很抱歉,但我没有系统,我现在可以测试它。

IHTH

答案 1 :(得分:2)

'invoice[1].details[1]'.replace(/details\[(\d+)\]/g, function(match, num) {
    return "details["+ (+num + 1) +"]";
});

为什么不使用第4列(免费)呢?此外,你不需要那个grep。例如:

$ free
             total       used       free     shared    buffers     cached
Mem:      15360000    5837240    9522760          0    1202040    2490640
-/+ buffers/cache:    2144560   13215440
Swap:      1048568          0    1048568

**注意只有当你想要覆盖以前的输出并且不使用“while true”时才使用\ r \ n - 这只是一个例子。

快乐的黑客攻击!

编辑:我完全误解了你的问题,无视我:(

这将根据free提供当前实际使用情况,并删除缓冲区/缓存:

$ while true; do awk '/Mem/{printf "\r"$4/$2*100"%"}' <(free); done
62.0591%