我创建了以下命令以获取总内存和已用内存
top -n1 | grep Mem | awk '{print "TOTAL="$3" USED="$7}'
我需要打印“内存低于 20%”
echo "memory is under 20%"
如果已用内存小于或等于 20%
请指教如何用 bash 计算这个?还是 awk?还是 perl 一个类轮?
最佳答案
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
查看与早期输出的区别
关于linux - Bash + 如果阈值低于最小值则计算警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26115554/