![logrotate 的“rotate”指令以及从每日迁移到每周](https://linux22.com/image/736993/logrotate%20%E7%9A%84%E2%80%9Crotate%E2%80%9D%E6%8C%87%E4%BB%A4%E4%BB%A5%E5%8F%8A%E4%BB%8E%E6%AF%8F%E6%97%A5%E8%BF%81%E7%A7%BB%E5%88%B0%E6%AF%8F%E5%91%A8.png)
我有一台从网络收集系统日志消息的服务器。Logrotate 当前已设置并运行,其配置如下:
/logs/*/log {
daily
rotate 60
}
我希望每周轮换一次,而不是每天轮换一次。显然,我要保留 60 天的日志,所以我可能会将 更改为rotate 60
,rotate 8
这样就可以保留 8 周的日志。
我的问题是:
- 如果我从每日改为每周并保留 8 条日志,那么当 logrotate 运行时,它会删除最旧的 52 条每日日志吗?或者它是否足够智能,能够注意到文件上的日期戳,并意识到 8 周的时间是 2 个月前?
- 如果我使用标志手动运行 logrotate
-f
来强制旋转,并且我这样做了 8 次,我是否能有效地完全擦除所有日志? - 如果我进入
logrotate.status
文件并手动删除一个特定日志,那么下次运行 logrotate 时该特定日志会发生什么?
答案1
- 如果您更改日志数量,则下次运行时 logrotate 将确保最多保留这么多日志。该数量不一定与天数相关(如果配置正确,您可以每小时运行一次 logrotate)。
- 是的,除非您有该
notifempty
设置(我确实推荐)。 - 就像您在删除日志后将其重新添加到配置中一样。它将轮换日志,因为它不知道之前何时可能已经轮换过日志,并且它将根据第 1 点保留所需数量的日志。