尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Linux du 与 find 命令实战:5步定位并清理 100G+ 日志文件

Linux du 与 find 命令实战:5步定位并清理 100G+ 日志文件
📅 发布时间:2026/7/6 12:19:17

Linux磁盘空间告急?5步精准定位并清理100G+日志文件实战指南

凌晨三点,服务器告警短信惊醒梦中人——"/var分区使用率100%"。这种场景对于运维人员来说再熟悉不过了。本文将分享一套经过实战检验的排查流程,将du、find、sort等命令组合成高效的工作流,帮助你在10分钟内定位并解决磁盘空间危机。

1. 快速诊断:确认问题范围

首先需要明确问题的严重程度和影响范围。以下命令组合能快速给出全局视图:

df -hT | grep -v tmpfs | sort -k6 -hr

这个命令会显示所有非临时文件系统的磁盘使用情况,并按使用率降序排列。关键字段解读:

  • Filesystem:分区设备名
  • Type:文件系统类型
  • Size:总容量
  • Used:已用空间
  • Avail:可用空间
  • Use%:使用百分比
  • Mounted on:挂载点

典型输出示例:

/dev/nvme0n1p2 ext4 500G 490G 10G 98% / /dev/nvme0n1p1 xfs 200G 180G 20G 90% /var

当发现某个分区使用率超过90%时,就需要立即介入处理。特别是/var这类存放日志、数据库文件的目录,往往是大文件的"重灾区"。

2. 空间占用分析:定位问题目录

确定问题分区后,使用du命令进行深度扫描。这里推荐以下组合命令:

sudo du -h --max-depth=1 /var | sort -hr | head -n 20

参数解析:

  • -h:人类可读格式(KB/MB/GB)
  • --max-depth=1:只显示一级子目录
  • sort -hr:按人类可读数值逆序排序
  • head -n 20:仅显示前20条结果

执行结果示例:

180G /var/log 120G /var/lib 80G /var/cache 12G /var/spool

如果发现/var/log异常膨胀,可以继续深入分析:

sudo du -h --max-depth=2 /var/log | sort -hr | head -n 15

进阶技巧:使用time命令统计扫描耗时,对于特别大的目录很有参考价值:

time sudo du -sh /var

3. 精确打击:查找特定大文件

定位到问题目录后,需要找出具体的"罪魁祸首"。find命令是最精准的"文件猎手":

sudo find /var/log -type f -size +1G -exec ls -lh {} \; | awk '{print $5,$9}' | sort -hr

这个复合命令实现以下功能:

  1. 查找/var/log下所有大于1G的文件
  2. 显示文件大小和路径
  3. 按大小降序排列

对于时间维度分析(查找老旧大文件):

sudo find /var/log -type f -size +100M -mtime +30 -exec ls -lht {} \; | awk '{print $6,$7,$8,$5,$9}' | sort -hr

这个命令会列出修改时间超过30天且大于100MB的文件,按修改时间倒序排列。

4. 安全清理:日志文件处理策略

找到目标文件后,切忌直接rm删除。正确的处理流程应该是:

  1. 确认文件用途:

    sudo file /var/log/mysql/mysql-bin.000123 sudo head -n 50 /var/log/nginx/access.log
  2. 压缩归档(适用于仍有保留价值的日志):

    sudo gzip /var/log/nginx/access.log
  3. 日志轮转(适用于系统服务日志):

    sudo logrotate -f /etc/logrotate.d/nginx
  4. 安全删除(确认无用后):

    sudo truncate -s 0 /var/log/mysql/slow.log
  5. 服务重启(释放被进程占用的空间):

    sudo systemctl restart mysql

特别提醒:对于数据库日志(如MySQL binlog),建议先确认复制状态再清理:

mysql -e "SHOW BINARY LOGS; PURGE BINARY LOGS BEFORE '2024-01-01 00:00:00';"

5. 防患未然:自动化监控方案

问题解决后,建议建立预防机制。这里提供两种自动化方案:

方案一:Crontab定时任务

# 每天凌晨检查磁盘空间 0 3 * * * df -h | awk '$5+0 > 90 {print $6 " is " $5 " full!"}' | mail -s "Disk Space Alert" admin@example.com # 每周日清理30天前的日志 0 4 * * 0 find /var/log -type f -name "*.log" -mtime +30 -delete

方案二:Shell监控脚本

#!/bin/bash THRESHOLD=90 PARTITION="/var" usage=$(df -h | grep "$PARTITION" | awk '{print $5}' | cut -d'%' -f1) if [ $usage -gt $THRESHOLD ]; then echo "WARNING: $PARTITION is ${usage}% full!" | mail -s "Disk Space Alert" admin@example.com # 自动清理30天前的Tomcat日志 find /var/log/tomcat -name "catalina.*.log" -mtime +30 -exec gzip {} \; fi

将脚本保存为/usr/local/bin/disk_monitor.sh并添加执行权限,然后加入crontab:

*/30 * * * * /usr/local/bin/disk_monitor.sh

对于生产环境,建议配置专业的监控系统(如Prometheus+Grafana)设置磁盘空间告警,当使用率超过85%时自动通知相关人员。

相关新闻

  • Linux cp 命令强制覆盖的三种实战场景与避坑指南
  • 银河麒麟V10 SP1 密码策略配置:PAM 模块实战与 8 个关键参数详解
  • Windows下利用WinSCP命令行与计划任务实现自动化文件同步

最新新闻

  • 如何构建企业级数据开发平台:DataSphereStudio架构解析与实践指南
  • Material Menu替代方案:为什么项目被废弃及现代替代品推荐
  • Real-ESRGAN实战指南:让模糊图片秒变高清的神奇AI工具
  • Instatic数据库迁移最佳实践:规划与执行
  • STM32F437ZG与LV30条码扫描模块的工业级应用实践
  • AI应用开发实战:从政策解读到RAG系统构建与工程化落地

日新闻

  • AI智能体安全防护框架AgentGuard:从原理到实战部署指南
  • KMX63与PIC18F26K40硬件组合及低功耗设计实践
  • 基于YOLO13改进的门体检测模型:C3k2模块与PoolingFormer技术解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号