首页 > 解决方案 > 使用 bash,如何在文件停止更新时收到警报?

问题描述

如果文件在 x 分钟内没有更改,我想通过电子邮件收到警报。

就上下文而言,应用程序在无人值守的系统上 24/7 全天候运行收集推文。如果存储推文的文件在 x 分钟内没有更改,我需要去检查应用程序是否意外终止。

请问有什么想法吗?我考虑watch过,但总的来说我是 bash 和 Linux 的新手。

标签: bashwatchfilesize

解决方案


例如,在目录“tmp”中有一个名为“tweets”的文件,我们可以运行一个脚本,将 find 与 mmin 标志结合起来。我们可以用 -5 表示过去 5 分钟内对文件的任何更改。如果 find 命令返回的文件数不为 0(通过管道到 wc -l),我们然后运行该命令发送电子邮件。

#!/bin/bash

if [[ "$(find /tmp -name "*tweets" -mmin -5 | wc -l)" != "0" ]]
then
     echo "There is an issue" | mailx -s alert someone@someemail.com
fi

然后可以将其设置为每 5 分钟运行一次 cron 作业。


推荐阅读