7

我正在寻找一个 bash 脚本,该脚本将检查文件是否在过去一小时内被修改,如果文件被修改,则通过电子邮件发送警报。该脚本将用于 Solaris 和 Ubuntu。我相信这并不难,但我不是 Linux 管理员。有人可以帮忙吗?

4

2 回答 2

14

这个怎么样?

#!/bin/bash

[[ -z `find /home/spatel/ -mmin -60` ]]

if [ $? -eq 0 ]
then
    echo -e "nothing has changed"
else
    mail -s "file has been changed" spatel@example.com
fi

将此脚本放在每小时 cron 作业中

01 * * * * /path/to/myscript 
于 2013-01-04T21:05:02.157 回答
2

linux支持该inotify命令。您可以使用它来监控文件活动——文件更改、文件创建,无论何时何地。

上面给出的 find 命令不适用于开箱即用的 solaris。对linux来说很好。在 Solaris 上有两种选择:

  1. 去 www.sunfreeware.com 下载 gnu coreutils,它将安装 gnu find(find 的上述版本)在/usr/local/bin

  2. touch -t [time string]编写一个使用 touch 命令的脚本,等待 60 多分钟然后测试文件,唯一的问题是这个脚本永远在后台运行,如果你知道一些 perl 来生成适合创建文件的时间字符串,你可以避免这种情况过去一小时的时间这是永远运行的版本:

    虽然是真的

    do
       touch dummy
    
       sleep 3615 # 1 hour 15 seconds
    

    [ file_i_want_to_test -nt dummy ] && echo 'file blah changed' | mailx -s '文件已更改' me@myco.com

    done
    
于 2013-01-06T03:26:31.787 回答