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 无预览直接删除,必须放在命令末尾,否则会报错/逻辑异常。
相关推荐
拂拉氏19 分钟前
【知识讲解】 Linux环境变量的认识与使用
linux·环境变量
zhangrelay33 分钟前
答疑-是否软件源问题都必须更换为国内呢-
linux·笔记·学习·ubuntu·ros2
zhangrelay38 分钟前
《ROS 机器人程序设计》课程教学大纲-2026- kinetic-lyrical
linux·笔记·学习·ubuntu·机器人
KFCgrandpahhh1 小时前
rk3576点灯
linux·驱动开发
拂拉氏1 小时前
【知识讲解】 Linux进程认识及深度理解
linux·进程
海鸥811 小时前
AIOps(智能运维)理解
运维·人工智能
码农小韩1 小时前
Linux应用开发(一)——Linux的标准IO
linux·运维·服务器
路弥行至1 小时前
Linux (ARM64 / Jetson) 挂载 exFAT 移动硬盘排障与离线安装指南
linux·运维·服务器·经验分享·笔记·jetson·exfat
漫谈数据智理1 小时前
主动元数据为何是数据编织的核心——从“连接数据”走向“感知、理解与行动”的 Data Fabric
运维·fabric
数据库小学妹2 小时前
MySQL长事务复盘:Sleep连接、MDL排队与undo滞留
运维·数据库·mysql