news 2026/4/23 14:43:58

Linux 服务器日志自动清理方案 - Cron 定时删除

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 服务器日志自动清理方案 - Cron 定时删除

Linux 服务器日志自动清理方案 - Cron 定时任务实践


一、背景问题

在生产环境中,随着服务持续运行,日志文件会不断累积,占用大量磁盘空间。以某开发测试服务器为例:

  • 日志目录/data/logs

  • 服务数量:100+ 个微服务

  • 磁盘占用:28G

  • 待清理文件:24267 个(超过 7 天)

如果不及时清理,可能导致磁盘空间不足,影响服务正常运行。


二、日志目录分析

2.1 目录结构

/data/logs/ ├── cas_logs/ # CAS认证服务日志 ├── nginx/ # Nginx日志 ├── ttpt_cas/ # 平台CAS日志 ├── yyzx_testservice_logs/ # 测试服务日志 ├── ... (100+ 服务目录) ├── spring.log # 散落的日志文件 └── spring.log.2025-12-31.log

2.2 日志文件命名规则

通过分析,发现日志文件主要有以下几种命名格式:

格式示例
服务名-YYYY-MM-DD-HH-序号.logcas-2022-01-04-11-1.log
服务名.log.YYYY-MM-DD.logttpt_gmservice_logs.log.2026-01-08.log
access_log.YYYY-MM-DD.logaccess_log.2026-01-08.log
*.gz压缩后的历史日志

三、解决方案设计

3.1 技术方案

使用find + cron组合实现自动化日志清理:

  • find 命令:按文件类型和修改时间筛选日志文件

  • cron 定时任务:每天定时执行清理脚本

  • 日志记录:记录每次清理操作,便于追溯

3.2 安全措施

安全措施说明
目录限制只在/data/logs目录下操作
文件类型限制只删除*.log*.log.**.gz文件
只删文件使用-type f,不删除目录
时间限制只删除 7 天前的文件(-mtime +7
操作日志记录每次清理的时间和文件数量

四、实施步骤

4.1 创建脚本目录

mkdir -p /data/scripts

4.2 创建清理脚本

创建文件/data/scripts/clean_old_logs.sh

#!/bin/bash # # 日志清理脚本 - 删除7天前的日志文件 # 每天早上9点由cron定时执行 # # 安全措施: # 1. 只在 /data/logs 目录下操作 # 2. 只删除日志文件(*.log, *.log.*, *.gz) # 3. 只删除文件,不删除目录 # 4. 记录清理日志 # ​ LOG_DIR="/data/logs" DAYS=7 SCRIPT_LOG="/data/scripts/clean_logs_history.log" ​ # 确保只在 /data/logs 目录下操作 if [ ! -d "$LOG_DIR" ]; then echo "$(date '+%Y-%m-%d %H:%M:%S') - 错误: 目录 $LOG_DIR 不存在" >> "$SCRIPT_LOG" exit 1 fi ​ # 记录开始时间 echo "$(date '+%Y-%m-%d %H:%M:%S') - 开始清理 ${DAYS} 天前的日志文件..." >> "$SCRIPT_LOG" ​ # 统计将要删除的文件数量 COUNT=$(find "$LOG_DIR" -type f \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" \) -mtime +$DAYS 2>/dev/null | wc -l) ​ # 删除日志文件 find "$LOG_DIR" -type f \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" \) -mtime +$DAYS -delete 2>/dev/null ​ # 记录完成 echo "$(date '+%Y-%m-%d %H:%M:%S') - 清理完成,共删除 $COUNT 个文件" >> "$SCRIPT_LOG"

4.3 赋予执行权限

chmod +x /data/scripts/clean_old_logs.sh

4.4 配置 Cron 定时任务

# 添加定时任务(每天早上9点执行) (crontab -l 2>/dev/null | grep -v "clean_old_logs.sh"; echo "0 9 * * * /bin/bash /data/scripts/clean_old_logs.sh") | crontab - ​ # 验证是否添加成功 crontab -l

Cron 表达式说明

0 9 * * * /bin/bash /data/scripts/clean_old_logs.sh │ │ │ │ │ │ │ │ │ └── 星期几 (0-7, 0和7都表示周日) │ │ │ └──── 月份 (1-12) │ │ └────── 日期 (1-31) │ └──────── 小时 (0-23) └────────── 分钟 (0-59)

五、验证与测试

5.1 预览待删除文件

# 查看将被删除的文件数量 find /data/logs -type f \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" \) -mtime +7 2>/dev/null | wc -l ​ # 查看部分文件列表 find /data/logs -type f \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" \) -mtime +7 2>/dev/null | head -20

5.2 手动执行测试

# 执行清理脚本 /bin/bash /data/scripts/clean_old_logs.sh ​ # 查看清理记录 cat /data/scripts/clean_logs_history.log ​ # 查看磁盘使用变化 du -sh /data/logs

5.3 查看 Cron 执行日志

# 查看系统 cron 日志 tail -f /var/log/cron ​ # 查看清理历史记录 cat /data/scripts/clean_logs_history.log

六、find 命令详解

6.1 核心参数说明

参数说明
-type f只匹配文件,不匹配目录
-name "*.log"匹配文件名模式
-o逻辑或,连接多个匹配条件
-mtime +7修改时间超过 7 天
-delete删除匹配的文件
2>/dev/null忽略权限不足等错误信息

6.2 时间参数对比

参数含义
-mtime +7修改时间 > 7 天前
-mtime 7修改时间 = 7 天前
-mtime -7修改时间 < 7 天前(7 天内)
-atime访问时间
-ctime状态改变时间

如何排除某些目录不清理?

在 find 命令中添加-not -path参数:

find "$LOG_DIR" -type f \ -not -path "*/kafka-logs/*" \ -not -path "*/nginx/*" \ \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" \) \ -mtime +$DAYS -delete

如何只清理特定服务的日志?

修改LOG_DIR或添加路径过滤:

# 只清理特定服务 LOG_DIR="/data/logs/yyzx_testservice_logs" ​ # 或使用通配符匹配多个服务 find /data/logs/yyzx_* -type f -name "*.log" -mtime +7 -delete

八、总结

本方案通过find + cron实现了服务器日志的自动化清理:

项目配置
清理目录/data/logs
保留天数7 天
执行时间每天 09:00
清理记录/data/scripts/clean_logs_history.log

核心优势

  • ✅ 自动化执行,无需人工干预
  • ✅ 安全限制,避免误删重要文件
  • ✅ 操作留痕,便于问题追溯
  • ✅ 配置灵活,易于调整参数
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 8:47:33

SAM 3应用案例:电商商品自动分割的完整实现教程

SAM 3应用案例&#xff1a;电商商品自动分割的完整实现教程 1. 引言 随着电商平台商品数量的爆炸式增长&#xff0c;图像处理自动化成为提升运营效率的关键环节。其中&#xff0c;商品图像分割是构建智能商品管理、背景替换、视觉搜索等系统的核心前置步骤。传统方法依赖人工…

作者头像 李华
网站建设 2026/4/23 8:47:03

通义千问3-4B长文本处理:论文摘要生成系统实现

通义千问3-4B长文本处理&#xff1a;论文摘要生成系统实现 1. 引言&#xff1a;端侧大模型驱动的智能摘要新范式 随着科研文献数量呈指数级增长&#xff0c;高效提取高质量摘要成为学术研究与知识管理的关键需求。传统摘要工具在处理超长文本时普遍存在上下文截断、语义丢失和…

作者头像 李华
网站建设 2026/4/23 8:47:02

Qwen-Image-2512新手指南:不懂技术也能用,云端1小时1块体验

Qwen-Image-2512新手指南&#xff1a;不懂技术也能用&#xff0c;云端1小时1块体验 你是不是也听说过AI绘画很神奇&#xff0c;能画出像真照片一样的图&#xff1f;但一想到要下载软件、装驱动、调参数就头大&#xff1f;特别是年纪大一点的朋友&#xff0c;孙子教了半天还是搞…

作者头像 李华
网站建设 2026/4/23 8:45:40

Youtu-2B性能优化:让轻量级对话模型速度提升50%

Youtu-2B性能优化&#xff1a;让轻量级对话模型速度提升50% 1. 引言&#xff1a;轻量级大模型的性能挑战 随着大语言模型&#xff08;LLM&#xff09;在端侧和边缘设备中的广泛应用&#xff0c;如何在有限算力条件下实现高效推理成为关键课题。腾讯优图实验室推出的 Youtu-LL…

作者头像 李华
网站建设 2026/4/23 8:49:21

BGE-M3部署案例:电商评论情感分析系统

BGE-M3部署案例&#xff1a;电商评论情感分析系统 1. 引言 随着电商平台的快速发展&#xff0c;用户评论成为衡量商品质量与服务体验的重要依据。然而&#xff0c;海量非结构化文本数据使得人工处理成本极高&#xff0c;亟需自动化的情感分析手段。传统的关键词匹配或规则引擎…

作者头像 李华
网站建设 2026/4/23 8:45:05

bert-base-chinese实战:企业级中文NLP解决方案部署

bert-base-chinese实战&#xff1a;企业级中文NLP解决方案部署 1. 引言 随着自然语言处理技术的快速发展&#xff0c;预训练语言模型已成为构建高效中文NLP系统的基石。在众多模型中&#xff0c;bert-base-chinese 因其出色的语义理解能力和广泛的适用性&#xff0c;成为工业…

作者头像 李华