检测指定时间内文件是否更新

思路

获取文件修改时间,然后和当前时间比较,如果大于指定时间则发送邮件。

方法一

#!/bin/bash
# 获取当前时间的 Unix 时间戳
Current_Timestamp=`date +%s`	
# 获取文件修改时间
File_Modified_Time=`stat test.log | grep "Modify" | cut -d"." -f1 | cut -d":" -f2-`
# 获取文件修改时间的 Unix 时间戳
File_Modified_Timestamp=`date -d "${File_Modified_Time}" +%s`
# 获取当前时间和文件修改时间的 Unix 时间戳时间差
Difftime=`expr ${Current_Timestamp} - ${File_Modified_Timestamp}`

# 如果时间差大于 300s,说明文件修改时间是在 5 分钟前,也就是最近 5 分钟文件没有更新,如果满足条件就触发以下的邮件发送动作
if [ $Difftime -gt 300 ]		
then
    echo "File not update in past 5 mins." | mail -s "File not update!" liangfh8006@gmail.com
fi

方法二

不像思路 1 那么直接,而是巧妙间接使用 find 命令来找出 5 分钟前没更新过的文件。 具体如下:

#!/bin/bash

# 使用 find 命令查找 5 分钟前文件更新的文件并且文件名是 test.log
File_Update_Flag=`cd /root && find -iname "test.log" -type f -mmin +5 | wc -l`
# 如果找到了这个文件,就就触发以下的邮件发送动作
if [ ${File_Update_Flag} -eq 1 ]
then
    echo "File not update in past 5 mins." | mail -s "File not update!" liangfh8006@gmail.com
fi

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦