相信用过rsyslogd logrotate转存切割日志的同学,都会发现日志转存后的文件,会出现日期不准确的问题
例如:6月21号生成的日志,无缘无故转存到了6月22号的文件里,日期提前了一天。
又或者就算21号的日志转存到了21号的文件里,当你打开却发现里面的内容有20号。
经过几天的验证,终于发现有一种方法,几乎做到了安全按照每天来清晰的分隔日志。就在上篇文章中大致介绍了做法,在这详细说一下:
操作的配置文件:/etc/anacrontab
内容配置如下:
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=9 (这里是个最大随机延时时间)
# the jobs will be started during the following hours only
START_HOURS_RANGE=23-24 (这是日志切割时间点,即只在23点到24点开始切割,不出意外就是23点啦)
#period in days delay in minutes job-identifier command
1 50 cron.daily nice run-parts /etc/cron.daily(这里设置一下延时时间,这里的作用本来是为了避免同时发生多个任务造成负载过重)
7 25 cron.weeklynice run-parts /etc/cron.weekly
@monthly 45 cron.monthlynice run-parts /etc/cron.monthly
这样设置的效果就是 日志会在每天的23:59 进行切割转存,当然要满足转存的条件,这样一整天(从上一天的23:59到今天的23:59)的日志就会保存在一个日志文件了。