logrotate 的“rotate”指令以及从每日迁移到每周

logrotate 的“rotate”指令以及从每日迁移到每周

我有一台从网络收集系统日志消息的服务器。Logrotate 当前已设置并运行,其配置如下:

/logs/*/log {
    daily
    rotate 60
}

我希望每周轮换一次,而不是每天轮换一次。显然,我要保留 60 天的日志,所以我可能会将 更改为rotate 60rotate 8这样就可以保留 8 周的日志。

我的问题是:

  1. 如果我从每日改为每周并保留 8 条日志,那么当 logrotate 运行时,它会删除最旧的 52 条每日日志吗?或者它是否足够智能,能够注意到文件上的日期戳,并意识到 8 周的时间是 2 个月前?
  2. 如果我使用标志手动运行 logrotate-f来强制旋转,并且我这样做了 8 次,我是否能有效地完全擦除所有日志?
  3. 如果我进入logrotate.status文件并手动删除一个特定日志,那么下次运行 logrotate 时该特定日志会发生什么?

答案1

  1. 如果您更改日志数量,则下次运行时 logrotate 将确保最多保留这么多日志。该数量不一定与天数相关(如果配置正确,您可以每小时运行一次 logrotate)。
  2. 是的,除非您有该notifempty设置(我确实推荐)。
  3. 就像您在删除日志后将其重新添加到配置中一样。它将轮换日志,因为它不知道之前何时可能已经轮换过日志,并且它将根据第 1 点保留所需数量的日志。

相关内容