能否配置logrotate仅删除旧日志文件而不执行轮转?
用logrotate实现仅删除7天以上旧日志(不轮转)的配置方法
完全可以用logrotate实现只删旧文件不轮转的需求,你之前失败是因为配置参数没配对。
给你一个可直接用的配置示例,编辑/etc/logrotate.d/a2a_log_cleanup:
# 替换成你的日志文件实际路径,比如/var/log/test/*.log /your/log/path/*.log { daily rotate 0 missingok notifempty nomail nocompress copytruncate maxage 7 }
逐个解释关键参数:
daily:每天检查一次文件年龄rotate 0:核心参数,告诉logrotate不保留轮转副本,直接触发旧文件删除逻辑maxage 7:明确删除7天以上的文件missingok:日志文件不存在时不报错notifempty:空日志文件跳过处理copytruncate:如果日志正在被程序写入,先复制内容再截断原文件,避免程序写日志失败(静态日志可以去掉)
测试步骤:
- 先调试看逻辑是否正确:
调试输出里应该能看到识别出6月26日的test1.log这类旧文件,并标记为要删除的条目。sudo logrotate -d /etc/logrotate.d/a2a_log_cleanup - 确认没问题后,执行实际删除:
sudo logrotate /etc/logrotate.d/a2a_log_cleanup
之前你调试显示“已轮转无需操作”,大概率是没加rotate 0。默认rotate值大于0时,logrotate会认为已经完成轮转流程,不会触发旧文件删除;而rotate 0会让它跳过轮转,直接处理旧文件清理。
内容的提问来源于stack exchange,提问作者Allan Xu
相关产品推荐
相关产品推荐

