首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用shell脚本进行日志监视

使用shell脚本进行日志监视
EN

Unix & Linux用户
提问于 2015-08-11 13:03:49
回答 3查看 22.5K关注 0票数 5

我想监控一个日志文件的错误,然后发送电子邮件给管理员。

日志文件包含以下数据

代码语言:javascript
运行
复制
11 Aug 02:30 Service1 restarted
11 Aug 05:35 Service1 restarted
11 Aug 08:43 Service2 restarted
11 Aug 11:20 Service1 restarted
11 Aug 14:53 Service2 restarted

我想创建一个脚本,每5分钟运行一次,检查最后一次出现的服务,重新启动并发送电子邮件。

例如:如果脚本在02:35运行,它将看到Service1重新启动,因此它将发送一封类似于Service1 restarted at 02:30的电子邮件。现在,当脚本在5:45运行时,它应该发送电子邮件,Service1只在05:35重新启动(不应该包括02:35重新启动)。

是否有办法达到这一要求?我对Linux和Shell脚本基本上是新手。

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2015-08-11 13:42:12

首先,制作一个5分钟的crontab:

代码语言:javascript
运行
复制
*/5 * * * * myscript.sh

它运行myscript.sh (在$HOME dir中)

代码语言:javascript
运行
复制
 #!/bin/bash
 tail -1 /path/to/file.log > /some/dir/after
 if cmp -s /some/dir/after /some/dire/before
 then
     cat /some/dir/after | mail -s "restart" admin@exemple.com
     cp /some/dir/after /some/dir/before
 fi

有正确的值(当然)。

请注意,这意味着五分钟内不会有两次重新启动。

票数 4
EN

Unix & Linux用户

发布于 2015-08-11 13:35:15

我假设在02:35,文件的最后一行将是重新启动02:30,所以您所需要的只是一个cron条目,它看起来像

代码语言:javascript
运行
复制
*/5 * * * * tail -1 /path/to/file.log | mailx -s "Last restart" admin@example.com

这种方法的缺点是管理员将在02:35,02:40,02:45收到相同的电子邮件,.

票数 3
EN

Unix & Linux用户

发布于 2017-02-22 21:04:22

@glenn-jackman提供的答复的一个改进是使用mailx的-E选项。来自mailx的手册页:

-E不发送空正文的消息。这对于cron(8)脚本的管道错误非常有用。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/222518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档