bash - 在我现有的关键字检测脚本中引入一个函数,该函数将在预定时间段后重新检查相同的条件
问题描述
我有一个脚本可以监控日志文件中的关键字。一旦发现关键字,它将执行一个功能(发送服务器关闭/启动状态的电子邮件)。
*已编辑我现在希望脚本报告停机状态,然后尝试通过调用脚本来重新启动服务器。
问题是当网络繁忙或拥塞时,可能会出现关键字即时监控。它不会经常发生,当它发生时不会持续很长时间,也不一定意味着服务器已关闭。简而言之,我试图消除或以其他方式减少虚假报告。
我认为我最好的方法是拥有脚本:
- 监视“服务器关闭”关键字(已经在脚本中)
- 检测关键字(已经在脚本中)
- 暂停一段预定的时间。说也许 5 秒暂停是为了让服务器在尝试重新启动之前完全关闭。
- 报告“服务器关闭”状态(已经在脚本中)
- 发出触发 (restart.sh) 脚本的命令
- 监视“服务器启动”关键字(已经在脚本中)
- 检测“服务器启动”状态(已经在脚本中)
- 报告“服务器启动”状态(已经在脚本中)
所以我想在调用restart.sh脚本之前几乎只需要在检测到down状态后暂停
到目前为止,这是我的脚本中的内容:
tail -fn0 /var/log/user | /usr/bin/gawk '
/disconnect_tcp_conn/ { report("down") }
/daemon apps started/ { report("up") }
function report(curr_state, msg) {
if ( prev_state != curr_state ) {
msg = "%m/%d/%Y %H:%M:%S Server is " curr_state
system("mail -s \047" msg "\047 mail@gmail.com </dev/null")
print msg | "cat>&2"
print strftime(msg) | "tee -a \047/var/log/server_mon.txt\047 >&2"
prev_state = curr_state
}
}
所以我想几乎只需要在调用restart.sh脚本之前报告down状态后暂停,然后在报告之前等待up状态。如果永远不会发生,我仍然会收到原始通知。
任何帮助都会很棒。谢谢
解决方案
推荐阅读
- matlab - 通过 Python API 从 gdb 调试 MATLAB mex
- jquery - jQuery AJAX 表:创建超链接
- javascript - javascript中的谷歌地图:一些标记没有点击事件
- sql - 在执行我的 SSIS 包期间可能导致此错误消息的原因是什么?
- c# - 如何在 wpf 中等待响应
- android - 列别名返回 null 的房间查询
- c++ - 实时应用程序的依赖倒置实现
- python - Django 中 Rails 的种子文件与 Python3 的等价物
- c++ - 如何创建 shared_ptr 的线程安全缓存
- javascript - Axios POST 请求失败,错误状态代码 500:内部服务器错误