每日轮换logrotate高级date

我已经设置了这样的logrotateconfiguration文件:

/var/log/tomcat/catalina.out{ copytruncate daily dateext rotate 10 missingok notifempty } 

在我的/ sysconfig / cron设置文件中,我已经设置了DAILY_TIME="00:00"它旋转日志,但是如果一个日志有datecatalina.out-20150415它包含date20150414的日志信息,这是前一天。

我应该更改/ sysconfig / cron文件中的date,或者我可以使用prerotate / endscript选项来实现此目的?

据我所知,DAILY_TIME在15分钟的时间内工作,我希望每日日志只包含一天的信息。 我现在得到的是什么,但文件名中的date不符合它们中的内容。

注意:我在SLES下, 每天的cron工作与其他发行版有些不同。

我不会玩/ sysconfig / cron,除了在午夜设置每日cronjobs,而不是使用postrotate。

假设今天是17/04/2015,这是你的目录在循环之后但在postrotate脚本运行之前的内容:

 catalina.out-20150414 catalina.out-20150415 catalina.out-20150417 catalina.out 

请注意,缺lesscatalina.out-20150416是1)由轮换创build的最后一个日志文件名为catalina.out-20150417 ; 2)昨天创build的日志已重命名为catalina.out-20150415以反映其内容。

这个场景允许我们对昨天的date进行“盲目的重命名”,比如:

 ... postrotate mv "catalina.out-$(date +"%Y%m%d")" "catalina.out-$(date --date="yesterday" +"%Y%m%d")" > /dev/null 2>&1 || true endscript ... 

在缺less日志文件的情况下, mv会产生一个redirect到/dev/null的错误消息,并且由|| true确保正的返回值。 || true