昨天分享了如何快速处理磁盘爆满的问题:快速定位和解决磁盘爆满问题的五步法,建议收藏
今天分享一下如何定期处理日志,自动化解决磁盘爆满的问题,让你多摸一会鱼!
1 实战目标
清理指定目录中超过一定天数的日志文件 支持多个日志后缀(如 .log
、.out
、.txt
)记录每次执行日志 设为 crontab
定时执行
2 Shell 脚本代码
vim opt/clean_expired_logs.sh
#!/bin/bash
# ========== 基础配置 ==========
# 目标日志目录(请根据实际修改)
LOG_DIR="/data/css2/tomcat/logs/"
# 日志文件扩展名,例如 log、txt、out 等
LOG_EXT="out"
# 日志保留天数(大于此天数的文件将被删除)
KEEP_DAYS=7
# 脚本运行日志(记录清理过程和异常)
SCRIPT_LOG="/var/log/clean_logs_script.log"
# ========== 开始执行 ==========
echo"[$(date +'%F %T')] 开始执行日志清理任务..." >> "$SCRIPT_LOG"
# 检查目标目录是否存在
if [ ! -d "$LOG_DIR" ]; then
echo"[$(date +'%F %T')] 错误:目录 $LOG_DIR 不存在!任务终止。" >> "$SCRIPT_LOG"
exit 1
fi
# 执行日志清理
echo"[$(date +'%F %T')] 正在删除 $KEEP_DAYS 天前的 *.$LOG_EXT 文件..." >> "$SCRIPT_LOG"
find "$LOG_DIR" -type f -name "*.$LOG_EXT" -mtime +$KEEP_DAYS -print -exec rm -f {} \; >> "$SCRIPT_LOG" 2>&1
echo"[$(date +'%F %T')] 日志清理任务完成。" >> "$SCRIPT_LOG"

3 测试运行
clean_expired_logs.shchmod +x clean_expired_logs.sh
./clean_expired_logs.sh
可查看运行日志:
cat var/log/clean_logs_script.log

4 设置定时任务
通过 crontab
每天凌晨2点自动执行:
crontab -e
添加内容:
0 2 * * * bin/bash opt/clean_expired_logs.sh
5 扩展建议
$LOG_DIR | |
-name "*.log" -o -name "*.out" | |
-print查看再执行 rm | |
du -sh $LOG_DIR输出前后对比 |
如果觉得实用,记得点赞关注哦!
往期精彩文章:
文章转载自运维李哥不背锅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




