我在 ubuntu 上的 logrotate 文件每天运行。我想确保它每小时轮换一次日志文件,以不再出现完整的磁盘错误。所以我的 logrotate 文件在 cron.daily 文件夹中,只是将它移动到 cron.hourly 就够了吗?
我还想将我的最大日志文件大小保持在 5MB,但我不确定要在 logrotate.cnf 中更改什么。
logrotate.cnf 内容(不换行):
每周轮换 4 创建 include /etc/logrotate.d
/var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 }
/var/log/btmp { missingok monthly create 0660 root utmp rotate 1 }
我知道我必须使用大小 5M,但我应该在哪里写呢?我认为第一行是针对所有日志文件而第二行和第三行仅针对 wtmp 和 btmp 吗?因此,如果我的逻辑是正确的,那么我必须在所有行中写入大小 5M ,对吗?
为了使其产生任何效果,cron 脚本的运行频率必须至少与您希望轮换文件的频率相同。即使您当前每天运行一次脚本(来自 cron.daily),它也只会每周更改一次文件(
weekly
logrotate 脚本中的关键字设置默认值,在 wtmp 和 btmp 的情况下被覆盖为每月一次).我最近的 Linux 机器上的 logrotate 版本只能减少到每天的持续时间(尽管设置大小限制会强制文件更频繁地轮换)。话虽如此,对于大多数服务器来说,日志轮换是具有破坏性的;如果您的目标是节省空间,那么保留较少的历史文件并压缩它们可能更合适:
(请注意,如果第一行中的更改被其他地方覆盖,则它们将无效。)
对我有用的一种不优雅的方法——根据文件大小每小时运行一次 logrotate,执行以下操作;
1) 将 Logrotate 脚本从 cron.daily 文件夹复制到 cron.hourly 文件夹
2) 更新 /etc/cron.hourly/logrotate 文件;注释并替换最后一行如下
3) 如下更新相关的 /etc/crontab 条目(如果需要)
4) 最后在你的 logrotate conf 文件中写入以下逻辑(根据你的要求更新文件夹路径和大小)