logrotate的三个size相关的参数size/minisize/maxsize
最近在搭建rsyslog/logrotate的环境,重新整理了logrotate的三个size相关的参数。
主要是这些参数用的时候都要花点时间才能整明白,然后一段时间不用就全忘了,又得来一遍。
- size
触发分割的条件是:1.日志大小达到这个值,和时间周期没有关系。 - minisize
触发分割的条件是:1.时间周期到了,2.日志大小达到这个值;两个条件都要满足。 - maxsize
触发分割的条件是:1.时间周期到了,2. 日志大小大于这个值;两个条件任何一个满足。
这里有一个概念一定要先弄清楚。
- logrotate是一个由cron调度的周期性的任务,它的调度周期和日志的分割周期有关系。
缺省linux环境下logrotate是一个按天调度的任务(脚本logrotate被放置在/etc/cron.daily路径下面)。 - 这样如果一个日志的分割周期被定义为hourly,但是logrotate的调度周期还是daily的话,那么这个日志的hourly分割周期是无效的,因为logrotate才每天调度一次,导致日志的实际分割周期是天。
- 因此logrotate的调度周期不能比任何日志的分割周期长。
假设最小的日志分割周期需求是hourly,那么logrotate的调度周期最多是一小时,只能更小。
举几个例子:
- size=100M, logrotate=daily
如果每天生成50M日志文件,则两天分割一次;
如果每天生成100M日志文件,则每天分割一次。
如果每天生成200M日志文件,则还是每天分割一次,因为每天才调度一次呢。 - minsize=100M, logrotate=daily
如果每天生成50M日志文件,则两天分割一次;
如果每天生成100M日志文件,则每天分割一次。
如果每天生成200M日志文件,则还是每天分割一次,因为每天才调度一次呢。 - maxsize=100M,logrotate=daily
如果每天生成50M日志文件,则每天分割一次;
如果每天生成100M日志文件,则每天分割一次。
如果每天生成200M日志文件,则还是每天分割一次,因为每天才调度一次呢。