Shell 脚本实战:自动定时清理日志文件,彻底磁盘爆满问题
之前分享了如何快速处理磁盘爆满的问题:《快速定位和解决磁盘爆满问题的五步法,建议收藏》
今天分享一下如何定期处理日志,自动化解决磁盘爆满的问题,让你多摸一会鱼!
复制
vim /opt/clean_expired_logs.sh1.
复制
#!/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"1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.
保存脚本为clean_expired_logs.sh。
赋予执行权限:
复制
chmod +x clean_expired_logs.sh1.
手动运行测试:
复制
./clean_expired_logs.sh1.
可查看运行日志:
复制
cat /var/log/clean_logs_script.log1.
通过 crontab 每天凌晨2点自动执行:
复制
crontab -e1.
添加内容:
复制
0 2 * * * /bin/bash /opt/clean_expired_logs.sh1.
功能扩展
方法
清理多个目录
用数组或循环遍历多个 $LOG_DIR
支持多个后缀名
-name "*.log" -o -name "*.out"
删除前预览文件
先用 -print 查看再执行 rm
清理后统计空间
加入 du -sh $LOG_DIR 输出前后对比
阅读剩余
THE END