You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否配置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:如果日志正在被程序写入,先复制内容再截断原文件,避免程序写日志失败(静态日志可以去掉)

测试步骤:

  1. 先调试看逻辑是否正确:
    sudo logrotate -d /etc/logrotate.d/a2a_log_cleanup
    
    调试输出里应该能看到识别出6月26日的test1.log这类旧文件,并标记为要删除的条目。
  2. 确认没问题后,执行实际删除:
    sudo logrotate /etc/logrotate.d/a2a_log_cleanup
    

之前你调试显示“已轮转无需操作”,大概率是没加rotate 0。默认rotate值大于0时,logrotate会认为已经完成轮转流程,不会触发旧文件删除;而rotate 0会让它跳过轮转,直接处理旧文件清理。

内容的提问来源于stack exchange,提问作者Allan Xu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 19:12:03