我正试图使一个警报脚本,将运行在我的Linux机器上每5分钟我只想有一个输出和已经通过电子邮件发送的数据将不再显示最新的数据
tail -n1 /var/log/message | grep suppress | mail-s 'suppress' test@hotmail.com
在我上面的命令中,它将一遍又一遍地运行相同的数据,直到我收到一个新的抑制警报
kgqe7b3p1#
当您的脚本每5分钟运行一次(可能使用crontab)时,可以使用
find /var/log/message -mmin -5 -exec grep suppress {} \; | tail -1 | mail-s 'suppress' test@hotmail.com
编辑:管道为空时如何跳过处理?不要使用管道:
msg=$(find /var/log/message -mmin -5 -exec grep suppress {} \; | tail -1) test -n "$msg" && echo "$msg" | mail-s 'suppress' test@hotmail.com
编辑2:请注意,当日志中有新的行没有suppress时,你会得到一个旧的suppress行。你需要更多的脚本来解决这个问题(记住找到匹配的行号或匹配的nr和比较),并在/var/log/message文件旋转时找到解决方案。也许你应该做一些像
suppress
msg=$(diff /var/log/message /tmp/oldmessages | grep suppress | tail -1) test -n "$msg" && cp /var/log/message /tmp/oldmessages && echo "$msg" | mail-s 'suppress' test@hotmail.com
1条答案
按热度按时间kgqe7b3p1#
当您的脚本每5分钟运行一次(可能使用crontab)时,可以使用
编辑:管道为空时如何跳过处理?不要使用管道:
编辑2:请注意,当日志中有新的行没有
suppress
时,你会得到一个旧的suppress
行。你需要更多的脚本来解决这个问题(记住找到匹配的行号或匹配的nr和比较),并在/var/log/message文件旋转时找到解决方案。也许你应该做一些像