按大小logrotate – 我需要更改cron吗?

我目前的logrotateconfiguration看起来像这样(使用logrotate 3.8.7)

"/var/log/haproxy.log" { daily size 250M rotate 1 create 644 root root missingok compress notifempty copytruncate } 

它每天成功运行一次,但是当尺寸超过250M时,它不会旋转。 所以无论大小如何,它都会一直等到一天结束。

我读过,有maxsize选项,更改size 250Mmaxsize 250M它仍然无法正常工作。

我需要设置一个cron以小时的方式运行logrotate,或者logrotate会自动运行,因为正在监听这个文件的大小,而且我还有其他的错误呢?

是的,你需要每天运行一次以上的logrotate来达到这个目的。 这是在手册页logrotate (8)的秒段中回答的:

通常情况下, logrotate是作为日常的cron作业运行的。 它不会在一天内多次修改日志,除非该日志的标准基于日志的大小,并且logrotate每天运行多次,或者除非使用-f--force选项。

如果你想每小时运行一次logrotate而不是每天运行一次,你可以移动它:

 mv /etc/cron.daily/logrotate /etc/cron.hourly 

自3.8.1以来,一直是maxsizesizemaxsize的区别在这里描述:

maxsize尺寸

即使在额外指定的时间间隔( dailyweeklymonthlyyearly )之前,日志文件在大于字节大小时也会进行旋转。 除了与时间间隔选项互斥之外,相关size选项是相似的,它会导致日志文件旋转而不考虑上一次旋转时间。 当使用maxsize时,会考虑日志文件的大小和时间戳。

这将使两个适合您的使用: size没有任何间隔和maxsize如果还需要间隔。 但是,这并不能改变logrotate每天只运行的事实。 这个时间间隔适用于大多数情况,因为在大多数情况下,日志需要花费比一天更长的时间才能增长到超过250M