我有一个shell脚本,我每分钟运行一个cron。 我的脚本检查在最后一分钟生成的日志,如果生成的日志超过一定的限制,则发送邮件给我。 现在,在发生问题的时候,每分钟可以生成数百个文件。 这就是我需要帮助的地方 我不想让cron每分钟发送一个邮件给我。 如果发送一封邮件,则可以等待5分钟或10分钟,然后再发送一封邮件。 但请记住,cron必须每分钟监视一次FS。 我只是想弄清楚如何阻止大量的邮件到我的收件箱中的问题,每分钟生成100个文件。
一旦我们收到邮件,我们将解决日志中报告的问题。
这是我的代码
#!/bin/sh fc=`find /opt/log/myapp/active/ -name *.LOG -mmin -1|wc -l` send_mail (){ email=myid@mail.com echo "$2" | /bin/mail -s "$1" $email } echo $fc if [ $fc -gt 2 ] then emailSubject="Log files anamoly" emailBody="The log files for your app is being written at a faster rate usual. No. of files written in the last minute are $fc" send_mail "$emailSubject" "$emailBody" fi
所以,cron每分钟运行一次,检查那一分钟产生的日志。 当它超过门槛时,它应该提醒我。 然后,等待10分钟,然后再次提醒,如果更多的日志在第11分钟产生。 请帮忙。
尝试这个:
sentMailLock=/var/cache/myapp/sentMail.lock sendMail=false if [ ! -e "$sentMailLock" ] then sendMail=true else old=$(find "$sentMailLock" -mmin +10) if [ -n "$old" ] then sendMail=true fi fi if $sendMail then ... send_mail "$emailSubject" "$emailBody" touch "$sentMailLock" fi