当前位置:首页>Linux>Linux du命令实战:从基础到高阶,一键定位磁盘占用元凶

Linux du命令实战:从基础到高阶,一键定位磁盘占用元凶

  • 2026-10-11 07:15:46
Linux du命令实战:从基础到高阶,一键定位磁盘占用元凶
日常运维中,运维系统告警最多的就是服务器磁盘使用率高。df看得到总量,却找不到那个文件导致磁盘空间暴涨。
du就是linux里最稳的目录文件大小统计工具,上手快、威力大。今天把du常用参数、高频组合、排查流程、避坑技巧全都介绍下。
一、du的核心功能
  • 递归统计目录/文件的磁盘占用(默认只统计目录,-a 显示文件)
  • 支持人类可读、层级限制、排序、排除、总计等高级用法
  • 和 df 配合:df 看分区满没满,du 定位谁占空间
总结起来就是df 看全局,du 查细节。
#df和du的本质区别df -h /       #查看分区使用情况(文件系统级别)du -sh /      #查看目录总大小(文件级别)#有时候df和du结果可能不一致?#df:统计文件系统块的使用情况(包含元数据、预留块)#du:统计文件实际占用的空间#差异通常 < 5%,如果差异很大,说明有已删除但未释放的文件
二、du的常用参数
参数
作用
高频场景
-h
人类可读(K/M/G)
所有命令必加
-s
仅汇总总大小
快速看目录总占用
-a
显示所有文件 + 目录
找大文件
-d N / --max-depth=N
限制目录深度
只看一级,二级子目录
-c
显示总计 total
多目录合计
--exclude
排除指定文件 / 目录
跳过日志 / 缓存
-t
按大小阈值过滤
只看≥100M 的项
--time
显示修改时间
定位旧大文件
三、du的基础用法
1. 看当前目录总大小
du -sh .
2. 看指定目录总大小
du -sh /var/log /home
3. 一级子目录大小(最常用)
du -h --max-depth=1#简写 -d 1du -h -d 1
4. 显示所有文件 + 目录
du -ah /datadu -sh * /data
5.只看目录,不看文件
 du -h --max-depth=1 | grep -v '^.*\s\.$'
四、du的组合应用
1. 根目录top20大目录(使用最多)
du -sh /* 2>/dev/null | sort -rh | head -20
2. 按照当前目录大小倒序
du -h -d 1 2>/dev/null | sort -rh
3. 只看≥100M 的文件或目录
du -h -t 100M -d 1
4. 多目录统计+总计
du -ch /opt /usr/local /data
5. 排除日志或临时文件
du -h --exclude="*.log" --exclude="tmp" /var/log
6. 显示大小+修改时间
du -h --time *
五、常用磁盘满的快速排查步骤
  • 先看分区:df -h 找到满盘挂载点(如/或/data)
  • 根目录下钻:du -h -d 1 / 2>/dev/null | sort -rh
  • 锁定大目录:进入后重复 du -h -d 1
  • 找最大文件:du -ah . | sort -rh | head -10
  • 安全清理:日志用 :> filename 清空,不直接删

六、注意事项

权限报错:加 2>/dev/null屏蔽无权限输出;
符号链接:默认不统计真实大小,加 -L 追踪;
已删文件未释放:du 看不到,用 lsof | grep deleted 查;
挂载点覆盖:新挂载遮住旧文件,du 统计不到。

七、总结

du是linux磁盘管理的瑞士军刀,不用复杂工具,几条命令就能快速定位占用。日常运维把上面的组合背熟,磁盘满再也不用慌。下次服务器告警,先df定位分区,再du层层下钻,几分钟搞定。

如果觉得文章对你的运维工作有帮助,记得点赞加收藏。

#运维#linux运维#linux实战#du命令

最新文章

随机文章