暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Shell脚本实战:自动定时清理日志文件,彻底磁盘爆满问题

178

昨天分享了如何快速处理磁盘爆满的问题:快速定位和解决磁盘爆满问题的五步法,建议收藏

今天分享一下如何定期处理日志,自动化解决磁盘爆满的问题,让你多摸一会鱼!

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.sh
赋予执行权限
chmod +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
 输出前后对比

如果觉得实用,记得点赞关注哦!

往期精彩文章:


K8S命令详解汇总【自用珍藏版】K8S集群部署 | K8S存储实战案例 |
K8S证书续签十年 | K8S部署Prometheus | Rancher部署并接管K8S |
Jenkins安装部署 | Gitlab安装部署 | 服务网格Istio安装及实战 |
搭建企业级Harbor仓库 | K8S对接Harbor仓库 | Docker常用命令汇总 |
Docker无法下载镜像解决办法 | 安装Docker的三种方法 | Docker基础概念汇总 |

Oralce19C RAC集群搭建 | Oracle集群管理命令汇总 | MySQL集群安装部署 |
MySQL一键备份脚本 | MySQL集群目录迁移 | Redis三主三从集群部署 |

150个Linux常用命令 |  8个有趣的Linux命令 | 主流Linux操作系统各版本网卡配置方法汇总,建议收藏!  |
Firewalld防火墙详细讲解 |  构建内部Yum源 | 超全的磁盘扩容方法 | 服务器带外管理知识

文章转载自运维李哥不背锅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论