我正在寻找一个 bash 脚本,该脚本将检查文件是否在过去一小时内被修改,如果文件被修改,则通过电子邮件发送警报。该脚本将用于 Solaris 和 Ubuntu。我相信这并不难,但我不是 Linux 管理员。有人可以帮忙吗?
问问题
9726 次
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 上有两种选择:
去 www.sunfreeware.com 下载 gnu coreutils,它将安装 gnu find(find 的上述版本)在
/usr/local/bin
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 回答