用 logrotate 管住日志体积,给出配置模板、验证方法与「删了不释放」的排查。下面按“先判断、再动手、最后验证”的顺序展开,每一步都给出可核对的检查点。
涉及 logrotate、日志切割、日志清理 的关键动作都写成了具体命令或配置项,可以照着走,也可以当检查表用。
配置位置
/etc/logrotate.d/ 下按服务建文件,或直接写在应用目录;全局默认在 /etc/logrotate.conf。
关键参数
daily 或 size 100M 触发,rotate 14 保留份数,compress 压缩,copytruncate 用于不能重开文件的进程。
验证方法
logrotate -d 干跑看匹配结果,确认后加 -f 强制跑一次,再看目录里是否生成了 .1 与 .gz。
不生效常见原因
文件权限导致跳过、路径写错、同目录多份配置冲突,日志里会有 skipping 提示。
删了不释放
被进程持有的已删文件用 lsof +L1 找,重启或 truncate 该进程的句柄才能回收空间。
速查表
| 环节 | 关键动作 |
|---|---|
| 配置位置 | /etc/logrotate.d/ 下按服务建文件,或直接写在应用目录;全局默认在 /etc/logrotate.conf |
| 关键参数 | daily 或 size 100M 触发,rotate 14 保留份数,compress 压缩,copytruncate 用于不能重开文件的进程 |
| 验证方法 | logrotate -d 干跑看匹配结果,确认后加 -f 强制跑一次,再看目录里是否生成了 .1 与 .gz |
| 不生效常见原因 | 文件权限导致跳过、路径写错、同目录多份配置冲突,日志里会有 skipping 提示 |
常见问题
Q:按文中写法改完,怎么确认真的生效?
不要只看配置文件,用对应的验证命令或从外部视角复测一次;改完先小流量观察一段,再全量推进,出问题能马上回退。
Q:按文中的步骤做完,还需要注意什么?
把处理过程和最终生效的参数记下来。同类问题再出现时直接对照记录,比重查一遍快得多。
Q:业务规模小,也要按这套标准来吗?
不需要一次到位。先把影响最大的两项做到位,剩余的随着业务增长逐步补齐,比一开始就追求完美更容易落地。
小结
回到这篇的 5 个环节:配置位置、关键参数、验证方法、不生效常见原因、删了不释放。把这几个动作写进检查表,下次遇到同类问题按顺序过一遍,比凭经验跳步骤稳。
相关阅读:内存占用高排查:从free到smem、磁盘扩容:LVM与文件系统在线扩展、crontab写错导致的故障与排查。
延伸阅读:crontab写错导致的故障与排查、磁盘扩容:LVM与文件系统在线扩展、内存占用高排查:从free到smem。