Linux 内存监控bash脚本的CPU使用率相当高

Linux 内存监控bash脚本的CPU使用率相当高,linux,bash,Linux,Bash,我编写了一个小脚本来监视内存使用情况,并在可用缓存内存降至1000 MB以下但大于800 MB时发送电子邮件: #!/bin/bash while [ true ] ;do used=`free -m |awk 'NR==3 {print $4}'` if [ $used -lt 1000 ] && [ $used -gt 800 ]; then echo "Free memory is below 1000MB. Possible memory leak!!!" | /bin

我编写了一个小脚本来监视内存使用情况,并在可用缓存内存降至1000 MB以下但大于800 MB时发送电子邮件:

#!/bin/bash
while [ true ] ;do
used=`free -m |awk 'NR==3 {print $4}'`

if [ $used -lt 1000 ] && [ $used -gt 800 ]; then
echo "Free memory is below 1000MB. Possible memory leak!!!" | /bin/mail -s "HIGH MEMORY ALERT!!!" user@mydomain.com

sleep 5
fi
done
这个脚本运行得很好,但由于某些原因,它的CPU使用率保持在10%不变(我们正在讨论的是新一代四核Xeon处理器。我有更大的脚本,它的CPU使用率远远低于1%


你知道是什么导致了这种情况,以及我如何优化它吗?

通过cron而不是无限循环运行它,看看这是否有帮助

知道是什么原因造成的吗?我如何优化它

线路

sleep 5
在检查内存是否在指定范围内的条件内。很可能大多数情况下,内存都不在该范围内,这会导致无限循环而没有任何睡眠,并使脚本消耗的资源超出预期


if
循环之外执行这一行应该会有所帮助。

啊,该死!我怎么会错过这个?你是对的。CPU使用率下降到~0%,Cron的最短时间是1分钟。没有办法每5秒Cron一个脚本。