Linux 只保留 30 天内日志(find命令删除日志文件)

Linux 只保留 30 天内日志,删除超 1 个月日志方案

一、核心命令(删除 30 天前文件,保留近 30 天)

1:清理log并打印删除记录,方便审计

bash 复制代码
find /data/logs -type f -name "*.log" -mtime +30 -print -delete

-print会输出每一个被删除的文件路径,可重定向到清理日志存档:

bash 复制代码
find /data/logs -type f -name "*.log" -mtime +30 -print -delete >> /var/log/log_clear.log

2:排除指定重要文件不清理

bash 复制代码
#操作前可执行以下命令,先预览要删除的文件
find /data/logs -type f -name "*.log" -mtime +30 ! -name "important.log"
#安全删除,-print 同步打印已删文件
find /data/logs -type f -name "*.log" -mtime +30 ! -name "important.log" -print -delete

3:仅清理当前一级目录,不递归子目录(防止误删子业务归档)

bash 复制代码
#先预览,不删除,核对待清理文件
find /data/logs -maxdepth 1 -type f -name "*.log" -mtime +30 -ls
#删除操作
find /data/logs -maxdepth 1 -type f -name "*.log" -mtime +30 -print -delete

补充参数说明

  • -type f:只匹配磁盘上真实普通文件,排除文件夹,可规避误删软链接指向文件的问题
  • -name "*.log":只处理 log 后缀日志,可去掉匹配所有文件
  • -mtime +30:文件最后修改时间距今大于30天;
    -mtime -30 = 30天内的文件;-mtime 30 = 刚好30天
  • ! 逻辑取反,等价于 -not;
  • -maxdepth 1:仅扫描当前一级目录,不进入任何子文件夹递归查找,必须紧跟查找目录后,写在其他过滤参数后面会失效;
  • -delete 无预览直接删除,必须放在命令末尾,否则会报错/逻辑异常。
相关推荐
H.莓飛15 分钟前
【C++】【STL】vector_OJ题
linux·服务器·开发语言·数据结构·c++·visual studio
Rabitebla16 分钟前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
景煜拾年1 小时前
InnoAI SQL 助手
运维·数据库·笔记·sql
无人生还别怕2 小时前
如何搭建docker仓库(轻量级)registry
linux·运维·docker·云原生·容器·registry·openanolisos
无足鸟ICT2 小时前
【RHCA+】agedu命令(查看磁盘使用情况)
linux
StarsGreen2 小时前
Android 启动流程详解
android·linux·单片机·嵌入式硬件
分布式存储与RustFS2 小时前
Hudi 表想摆脱 HDFS 绑定?用 Spark + Hudi 直接写进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
zhengfei6112 小时前
CVE-2026-98432:Linux 内核 TCP 释放后重用漏洞,CVSS 9.8 但补丁覆盖极不均衡
linux·运维·tcp/ip
逐流人3 小时前
DevOps 入门实战(一):从 CI/CD 概念到 Jenkins 自动构建部署
运维·云原生·云计算·jenkins·devops
叼烟扛炮3 小时前
Linux 学习笔记(六十一):网络编程毕业设计——Reactor 反应堆模式
linux·网络·笔记·学习·课程设计