它已经很长时间了,我似乎不记得如何做到这一点。 我试图grep一个单词或文字和电子邮件的日志文件,如果它不存在的最后十五分钟(我会设置一个cron工作每15分钟,除非有更好的办法做到这一点)我到目前为止是
if grep --quiet 'SEND OK' /logfile; then echo exists else echo not found | mail -s "houston we have a problem" [email protected] fi
我可以使用tail来检查最近15分钟的日志文件吗? 是否做到了这一招?
我可以给它一个“如果”给我发电子邮件,如果它没有find关键字在过去15分钟,因为它将运行每十五分钟
我将不胜感激任何帮助
如果你想看看文件的最后N分钟(至less是上次脚本运行后写入的文件的内容),那么你需要像logtail
( http://linux.die.net/男人/ 8 / logtail )。 这可能已经在您的发行版中可用。 tail
自己不会帮助,因为它只会给你最后N行/字符,无论它们是什么时候写的。
如果在你的日志中有date和时间信息(我这么认为),你可以推荐你的grep另一个grep过滤date,并使用-A {{big_number}}从15分钟前到现在所有行。
类似于:
grep "$(date -d "15 minutes ago" +"{{your_log_date_format}}")" -A {{ big_number }} /logfile | grep --quiet 'SEND OK'
这是肮脏的方法(如果您的{{big_number}}最小的时间比在最近15分钟内写入日志的行数有问题)。
积分是: http : //geek.co.il/2010/04/08/script-day-output-the-tail-of-a-log-based-on-time 。