Logrotate 每天/每周/每月

Posted

技术标签:

【中文标题】Logrotate 每天/每周/每月【英文标题】:Logrotate daily/weekly/monthly 【发布时间】:2017-09-26 11:09:42 【问题描述】:

如果我们可以在 cron 中设置(并且实际上可以),为什么我们要在配置文件中设置每日/每周/每月选项?这个选项有什么意义?

例如:我设置为每天(每天)执行“logrotate -f /etc/logrotate.d/app”。 但是在配置文件(/etc/logrotate.d/app)中,我会每周设置:

/home/dirnov/www/letsee/logs/*.log 
        monthly
        missingok
        rotate 4
        compress
        notifempty

而且我看到没有“每月”的意义,因为 cron 会“每天”执行。

【问题讨论】:

/etc/logrotate.d 文件中的条目指定该特定文件的轮换周期。每天从 cron 运行 logrotate 的条目允许 logrotate 程序读取 logrotate.d 目录中的那些配置文件,并决定对每个文件采取什么适当的操作(可能具有不同的周期规范)。跨度> -f 将强制日志轮换,而不考虑轮换标准。执行-f 有效地删除了模块的很大一部分。以下是有关同一主题的一些有用信息。 ***.com/questions/2117771/… 【参考方案1】:

crond 和 logrotate 之间的关系相当简单:cron 每天运行一次 logrotate(参见/etc/cron.daily/logrotate),然后 logrotate 根据配置文件决定要做什么。您关于每月的具体问题已澄清in the logrotate(8) manpage:

每月 日志文件在一个月内第一次运行 logrotate 时轮换(这通常是在一个月的第一天)。

您的配置的效果是日志文件将在一个月内增长,一旦开始新的一个月,logrotate 将重命名并压缩与您提供的文件规范匹配的任何非零大小的文件。

最后,如果您使用logrotate -f,logrotate 将轮换日志,而不管配置中设置的周期。如果您没有使用发行版提供的 cronjob,请记住不要提供 -f

(请注意,此答案假设 Debian 和 Ubuntu,因为这是我能够轻松测试的,但应该更普遍地应用)。

【讨论】:

以上是关于Logrotate 每天/每周/每月的主要内容,如果未能解决你的问题,请参考以下文章

每天、每周、每月和每年调用一个方法

项目管理人员每天 每周 每月该干点啥?

sqlserver 获取到日期范围内每天,每周,每月,每年记录

一位优秀管理者每天每周每月应该做的,超级实用

Linux中的日志功能

logrotate日志轮转