Linux 磁盘空间排查与清理指南

一、常用命令介绍

1. df --- 查看磁盘整体使用情况

bash 复制代码
# 以人类可读格式显示各分区使用情况
df -h

# 只看指定目录所在分区
df -h /tmp

输出示例:

复制代码
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       100G   82G   18G  82% /

2. du --- 查看目录/文件占用空间

bash 复制代码
# 查看指定目录总大小
du -sh /tmp

# 查看当前目录下各子目录大小,按大小降序排列
du -sh /tmp/* | sort -rh | head -20
参数 说明
-s 只显示汇总大小
-h 人类可读格式(K/M/G)
--max-depth=1 只统计一层子目录

3. find --- 按条件查找文件

bash 复制代码
find <路径> [条件] [动作]

常用条件:

参数 说明 示例
-type f 只查文件
-type d 只查目录
-name "*.log" 按文件名匹配
-size +100M 大于 100M -size +1G
-mtime +7 修改时间超过 7 天
-mmin +720 修改时间超过 720 分钟
-maxdepth 1 不递归子目录

常用动作:

动作 说明
-exec ls -lh {} + 列出文件详情(批量)
-exec rm -fv {} \; 逐个删除并输出日志
-delete 直接删除(慎用)

4. ls --- 列出文件详情

bash 复制代码
# 按时间降序
ls -lht

# 按大小降序
ls -lhS
参数 说明
-l 详细信息
-h 人类可读大小
-t 按修改时间排序(新→旧)
-S 按文件大小排序(大→小)
-r 反转排序

5. sort --- 排序

bash 复制代码
# 按第5列(文件大小)降序排列
... | sort -k5 -rh
参数 说明
-r 降序
-h 识别人类可读单位(K/M/G)
-k5 按第 5 列排序

二、实战:清理 /tmp 目录大文件

背景

服务器磁盘告警,排查发现 /tmp 目录下堆积了大量临时缓存文件,需要清理过期的大文件释放空间。

Step 1:确认磁盘与目录占用

bash 复制代码
# 查看分区使用率
df -h

# 确认 /tmp 占用
du -sh /tmp

Step 2:预览待清理文件

筛选条件:

  • 修改时间超过 12 小时(720 分钟)
  • 文件大小超过 100M
  • 按修改时间降序排列
bash 复制代码
find /tmp -maxdepth 1 -type f -name "xxx-cache-*" -mmin +720 -size +100M -exec ls -lht {} + 2>/dev/null

Step 3:确认无误后执行删除

bash 复制代码
find /tmp -maxdepth 1 -type f -name "xxx-cache-*" -mmin +720 -size +100M -exec rm -fv {} \;

Step 4:验证结果

bash 复制代码
du -sh /tmp
df -h

三、注意事项

⚠️ 先预览,再删除! 永远不要跳过确认步骤。

  1. 删除前务必用 ls 预览,确认文件列表无误
  2. 根据业务调整时间和大小阈值
  3. 大量文件时 -exec ... {} +(批量)比 {} \;(逐个)效率更高
  4. 生产环境建议记录操作日志,便于回溯

四、扩展:定时自动清理

将清理逻辑加入 crontab,避免反复手动操作:

bash 复制代码
# 每天凌晨 3 点清理超过 12 小时且大于 100M 的临时文件
0 3 * * * find /tmp -maxdepth 1 -type f -name "xxx-cache-*" -mmin +720 -size +100M -exec rm -f {} \; >> /var/log/tmp_cleanup.log 2>&1

总结

处理思路:

复制代码
df/du 定位 → find + ls 预览 → 确认 → find + rm 清理 → 验证 → 自动化

掌握 dfdufindlssort 这几个命令的组合使用,基本可以应对日常磁盘空间排查与清理的绝大多数场景。

相关推荐
TomEval几秒前
【App 自动化】14 - App 自动化基础与环境
运维·自动化
新时代牛马12 分钟前
Linux 防火墙:nftables 与iptables 兼容层
linux·运维·服务器
xhbh66621 分钟前
中小企业 Redis 运维,如何安全归档 RDB、AOF 备份文件?
运维·数据库·缓存·数据备份·文件备份·同步备份·号码备份
是逍遥子没错32 分钟前
一个斜杠,击穿整座网关:API网关路径前缀绕过认证实战
运维·服务器·web安全·网络安全·渗透测试·系统安全
其实防守也摸鱼1 小时前
每天一个知识点——RCE漏洞
运维·服务器·数据库·windows·安全·github·漏洞
努力努力再努力wz1 小时前
【Docker 入门系列】:从 Namespace、CGroup 到 LXC:理解容器运行时、rootfs 与 LXC 实战
运维·docker·容器
ao-weilai2 小时前
Linux网络编程:网络知识基础
linux·网络·php
GeW2 小时前
RHCE10一次过!提高通过率+快速拿证的7个核心技巧
linux
JavaPub-rodert2 小时前
Docker 多阶段构建:为什么生产环境镜像可以小 90%
运维·docker·容器
浅念-2 小时前
C++ Protobuf 入门实战:基于通讯录项目吃透proto3语法与序列化
linux·服务器·网络·c++·protobuf·proto·proto3