bash - 读取日志文件,如果发生错误重启服务
问题描述
我正在尝试创建一个脚本来监视日志文件,如果出现错误,它会使用 python 发送一封电子邮件。该脚本有效,但一旦检测到错误,它就会开始发送垃圾邮件。有没有办法避免这种情况?
# cat /usr/local/bin/monitor.bash
#!/bin/bash
tail -fn0 /var/log/syslog | while read line ; do
echo "${line}" | grep -i "error" > /dev/null
if [ $? = 0 ] ; then
python emailsend.py
fi
done
提前致谢!
编辑:我计划将此作为服务运行,以持续监控日志。一旦它检测到错误,我希望它发送一封电子邮件,然后它会重新启动一些服务(尚未将其添加到脚本中)并继续监视文件直到它旋转。我希望这能缩小一点。
解决方案
如果我正确理解了代码的逻辑,您可以在日志中添加一些行以防止进入if
子句并重新启动服务。
# cat /usr/local/bin/monitor.bash
#!/bin/bash
tail -fn0 /var/log/syslog | while read line ; do
echo "${line}" | grep -i "error" > /dev/null
if [ $? = 0 ] ; then
python emailsend.py
# append line to the log to prevent grepping of 'error'
echo 'dummy line' >> /var/log/syslog
# restart your services here
fi
done
希望能帮助到你。
推荐阅读
- python - ~12 如何以十进制表示 -13?
- angular - 具有无限 rowModelType 问题的 AG Grid 26.0.0 Angular 12.2 服务器端分页
- python - 按钮 selenium python 内 div 内元素跨度的唯一 xpath
- python - 身份验证时出现服务器错误 500 | 姜戈
- java - 为什么 ProgressDialog 不从 1 数到 100?
- laravel - Xdebug:在套接字 10 上发送 179 字节时出现问题:管道损坏
- spring-boot - 使用docker容器中的keycloak从springboot rest API获取未经授权的响应
- python - Python如何通过csv文件中的id计算唯一值
- c++ - 反应原生 IOS 应用程序在 Xcode 13 上崩溃 - RCTBridge 需要 dispatch_sync 来加载 RCTDevLoadingView
- html - 如何将标题和搜索栏移动到屏幕中央?