我有一个棘手的问题。我需要监视一组文件,看看是否在其中创建了一系列文件。我想大约每10分钟监控一次文件,如果没有创建任何文件,我会通过电子邮件报告。这通过find看起来有点容易,我想做一些像这样的事情,我发现修改时间为10分钟的文件,看看每十分钟有多少变化(应该在10左右左右。)
find . -maxdepth 2 -type f -mmin -10 -ls 2>/dev/null | wc -l
我遇到的问题是时间不是十分钟,有时候会多一点,有时会少一点。另外,我不仅要求检查时间,还要检查其中有时间戳的文件名,例如processa_15:30(以及另一个目录中的processb_15:30,等等)。
我相信inotifywait会对这样的东西有用,但它没有安装,我认为我不能安装它。我更喜欢用bash或Perl来做这个,它是在CentOS 6.0系统上。但是,我也可能无法安装任何Perl模块来执行此操作。任何建议将不胜感激。
答案 0 :(得分:1)
如果您要监控创建的文件数量,您是否考虑制作一个脚本来检查您使用find查找的文件数量,请睡眠约10分钟(如果他们再多一点或者少一点你的极限,即+ -30秒),检查并比较两个数字和循环?这样你可以使用像这样的函数:
find1=`find . -maxdepth 2 -type f -mmin -10 -ls 2>/dev/null | wc -l`
sleep 600
find2=`find . -maxdepth 2 -type f -mmin -10 -ls 2>/dev/null | wc -l`
if [ "$find1" == "$find2" ]; then
echo "no new files..." | mail -s "$date : Alert" user@domain.com
else
exit
fi
这样你可以比较这两个数字,如果没有变化,那就发电子邮件。
要添加+ -30s的限制,可以在find1和find2之前和之后运行查找和分配数字到变量30s,你可以生成额外的条件,如find1 = find2,但数字在30s之前和之后不同,然后电子邮件。
您还可以根据文件名时间戳等对if循环进行进一步检查,如果是AND等等。
这样你就可以在循环中连续运行该函数。