检查文件修改date和电子邮件,如果它已经改变

我正在寻找一个bash脚本来检查一个文件是否在过去一小时内被修改过,如果修改了它,就会发送一个警报。 这个脚本将在Solaris和Ubuntu中使用。 我相信这不难,但我不是Linuxpipe理员。 有人可以帮忙吗?

这个怎么样?

 #!/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 

linux支持inotify命令。 您可以使用它来监视文件活动 – 文件更改,文件创建,无论您想要什么,只要你想。

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

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

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

    而真的

     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