我创建了以下命令,以获得总内存和已使用内存
top -n1 | grep Mem | awk '{print "TOTAL="$3" USED="$7}'
我需要打印“内存不足20%”
echo "memory is under 20%"
如果使用内存小于或等于20%
请告诉我如何用bash来计算这个?或者是awk?还是perl一行?
发布于 2014-09-30 00:02:40
top -n1 | grep Mem | awk '{print "TOTAL="$3" USED="$7; per=$7/$3*100; if(per<=20) print "memory is under 20%" }'
产出量
TOTAL=1944532k USED=176456k
memory is under 20%
那是什么呢?
per=$7/$3*100
计算百分比
if(per<=20) print "memory is under 20%"
检查per
,百分比小于20%,如果是,则打印消息。
或
top -n1 | grep Mem | awk '{print "TOTAL="$3" USED="$7; per=int($7)/int($3)*100; if(per<=20) print "memory is under 20%" }'
产出量
TOTAL=1944532 USED=176456
memory is under 20%
将字符串值截断为int。请参阅前面的输出与从输出中删除k
的差异
发布于 2014-09-30 00:21:26
您可以从/proc/meminfo
获得meminfo,这样我们就可以保存top/ps/free..
输出解析/加油。这个怎么样:
awk '/^MemTotal/{t=$2}/^MemFree/{f=$2}
END{printf "Used Mem: %.2f%\n", 100*(t-f)/t}' /proc/meminfo
这个打印出用过的mem百分比。产出如下:
Used Mem: 84.76%
这一行,只有在使用百分比<=20%时才会输出使用的mem信息:
awk '/^MemTotal/{t=$2}/^MemFree/{f=$2}
END{p=100*(t-f)/t; if(p<=20)printf "Used Mem<20%: %.2f%\n",p}' /proc/meminfo
https://stackoverflow.com/questions/26115554
复制相似问题