【问题标题】:Logrotate daily/weekly/monthlyLogrotate 每天/每周/每月
【发布时间】: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 有效地删除了模块的很大一部分。以下是有关同一主题的一些有用信息。 stackoverflow.com/questions/2117771/…

标签: linux logging logrotate


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多