Logrotate 每日/每周/每月

ily*_*ect 3 linux logging logrotate

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

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

/home/dirnov/www/letsee/logs/*.log {
        monthly
        missingok
        rotate 4
        compress
        notifempty
}
Run Code Online (Sandbox Code Playgroud)

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

kik*_*iko 5

crond 和 logrotate 之间的关系相当简单:cron 每天运行一次 logrotate(请参阅/etc/cron.daily/logrotate参考资料),然后 logrotate 根据配置文件决定要做什么。logrotate(8) 联机帮助页中阐明有关每月的具体问题:

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

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

最后,如果您使用logrotate -f,logrotate 将轮换日志,无论在配置中设置的时间段如何。如果您没有使用发行版提供的 cronjob,请记住不要提供-f.

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