如果文件大小停止增长,如何收到警报?
tail -f mytext.txt
显示追加到文件的行。
mail -s "Alert" email@email.com
可以发送警报。
我对如何将两者结合起来,或者是否有更有效的方法来监视文件的活动感到有些迷茫。
您可以简单地观察文件大小,然后记录当前大小,并在您选择的时间间隔后,再次检查大小,如果它没有增长,请发出警报。大致如下:
#!/bin/sh
file="/tmp/somefile"
size=$(wc -c < "$file")
interval="5"
while true; do
sleep $interval
newsize=$(wc -c < "$file")
if [ $size -ge $newsize ]; then
echo "AAAARGH!"
fi
size="$newsize"
done
用邮件命令或类似的东西替换 echo,用更合理的东西替换 echo 和文件,使其真正适合您。
另一种方法是通过 cronjob 来完成(如果间隔超过 1 分钟,某些系统支持间隔小于 1 分钟),并仅检查其上的 md5 值(某些系统只有 md5sum 命令,您需要调整)
启用 cronjob,它将每 10 分钟运行一次。
0,10,20,30,40,50 * * * * bash /FULL_PATH/detect.sh
这是检测脚本 detect.sh
#!/bin/bash
file="mytext.txt"
mv /var/tmp/md5OfFile /var/tmp/Oldmd5File
md5 $file > /var/tmp/md5OfFile
# or md5sum $file > /var/tmp/md5OfFile
diff /var/tmp/md5OfFile /var/tmp/Oldmd5File >/dev/null && echo "AAAARGH!" |mailx -s "Alert" email@email.com