Linux Shell脚本清理过期日志的核心是用find按时间筛选删除,需先定义LOG_DIR和RETAIN_DAYS变量,检查目录存在性,用-mtime +$RETAIN_DAYS配合-print预览再-delete,加-maxdepth 1、-name限制范围,记录日志、错误处理,并通过cron每日定时执行。

Linux Shell 脚本清理过期日志文件,核心是用 find 命令按时间筛选并删除,配合简单逻辑避免误删。
明确日志路径和保留天数
先确定要清理的日志目录(如 /var/log/myapp/)和保留策略(比如只保留最近 7 天)。脚本开头应定义清晰变量,方便后续维护:
- LOG_DIR="/var/log/myapp" —— 日志根目录
- RETAIN_DAYS=7 —— 保留多少天的文件
- 建议加判断:检查目录是否存在,避免执行失败
用 find 安全删除过期文件
使用 find $LOG_DIR -type f -mtime +$RETAIN_DAYS -delete 是最常用方式。-mtime +7 表示“修改时间超过 7 天”,即 8 天前及更早的文件。注意几点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 首次运行建议先用 -print 替代 -delete,预览将删哪些文件
- 若日志带压缩后缀(如 .log.gz),可加 -name "*.log*" 限定匹配范围
- 避免递归进子目录?加上 -maxdepth 1
添加日志记录和错误处理
生产环境脚本不能静默运行。每次清理后记录时间、删除数量和路径,出错时也需提示:
- 用 echo "$(date): $(find ... | wc -l) files removed" >> /var/log/clean.log
- 删除命令后加 || echo "Cleanup failed for $LOG_DIR"
- 可设 set -e 让脚本在任意命令失败时退出
定时执行用 cron 管理
把脚本保存为 /usr/local/bin/clean-logs.sh,加执行权限:chmod +x。再编辑 root 的 crontab:
- 0 2 * * * /usr/local/bin/clean-logs.sh —— 每天凌晨 2 点执行
- 建议先手动运行一次,确认输出和行为符合预期
- 避免多个实例并发:可在脚本开头加简单锁文件机制(如 touch /tmp/clean-logs.lock)

















