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 每天/每周/每月的主要内容,如果未能解决你的问题,请参考以下文章