目前正在创建一个脚本,该脚本将记录当前每秒使用的CPU和内存,直到您点击一个键,然后通过gnuplot绘制结果图形。我似乎无法弄清楚如何提取正确使用的内存百分比。我目前关注的命令是......
echo "(free | grep Mem | awk '${print $3/$2 * 100"%"}')"
显示当前可用的内存量,并给出以下结果... 恩。
97.0305%
98.06%
94.07%
87.950%
我不需要显示免费的金额,而是使用当前的金额。取这个数字并从100中减去它(将其设置为变量或其他东西)应该非常简单,但我想要的是将它保存在我上面的单行echo命令中。有什么建议?谢谢
答案 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%