你非常详细地描述了问题:
- You have a log that automatically rolls when the log gets to a certain size.
- You have another job that runs against the log file, and the log file only.
- You can t adjust the log roll, and you can t adjust when the check of the log happens.
因此,如果日志变更,你正在查找错误档案。 您是否能够检查你以前用手脚检查过的所有记录档案? 或者,是否只允许检查目前的记录档案?
这样做的一个途径是跟踪你上次检查记录档案时的情况,然后检查所有比你上次检查时更新的记录。 您可为此使用一个名为last.check
的文件。 这份档案没有内容(内容无关紧要),但你利用该档案中的时间段,在你最后的航海中显示。 届时,你可以使用<代码>touch,以便在你成功核对记录后改变时间序列:
last_check="$log_dir/last.check"
if [ ! -e "$last_check" ]
then
echo "Error: $last_check doesn t exist"
exit 2
fi
find $log_dir -newer "$last_check" | while read file
do
[Whatever you do to check for nullpointerexception]
done
touch "$last_check"
您可创建原始<代码> 最终_check。 使用<代码>touch的文档 指挥:
$ touch -m 201111301200.00 $log_dir/last.check #Touch date is in YYYYMMDDHHMM.SS format
Using a touch file provides a bit more flexibility in case things change. For example, what if you decide in the future to run the crontab every hour instead of every 30 minutes.