当前位置: 首页 > news >正文

Linux du 命令终极指南:从基础到精通

文章目录

  • Linux du 命令终极指南:从基础到精通
  • du 命令简介
  • 常用参数详解
  • 常见用法示例
    • 查看当前目录总大小
    • 查看当前目录及其子目录占用空间
    • 只显示当前目录总占用空间
    • 查看目录下每个文件和子目录的大小
    • 查看某目录深度为 1 的大小分布
    • 查看某目录并排除日志文件
    • 查看多个目录的总大小
    • 统计单个文件的磁盘占用
  • 进阶技巧与常见问题
    • 文件逻辑大小 vs 磁盘占用
    • 符号链接处理
    • 快速定位大文件
  • 自动化清理实战
    • 定期清理旧日志
    • 清理空目录
  • du 和 df 的区别
  • 实战:查找占用空间最多的目录
  • 总结


Linux du 命令终极指南:从基础到精通

在日常的 Linux 运维或开发工作中,我们经常需要查看某个目录或文件所占用的磁盘空间,以便进行空间管理、故障排查或优化存储结构。而 du(Disk Usage)命令就是专门用于显示磁盘使用情况的利器。

本文将为你全面讲解 du 命令的使用方法、常用参数及典型示例,帮助你快速上手并灵活运用。


du 命令简介

du(disk usage)命令用于显示文件或目录所占用的磁盘空间。默认情况下,它会递归地统计每个子目录的大小,并以字节为单位输出。

du [选项] [文件或目录]

常用参数详解

参数含义
-h以人类可读的方式显示(如 KB、MB、GB)
-s仅显示总计(summary),不递归显示子目录
-a显示所有文件和目录的大小
-c最后增加一行显示总计(总和)
-d N显示目录深度为 N 的子目录大小(适用于 GNU 版本)
--max-depth=N功能与 -d 相同(更具可读性)
--exclude=PATTERN排除匹配模式的文件或目录
-x只统计当前文件系统的使用情况,忽略挂载点
--time显示目录的最后修改时间
--apparent-size显示文件逻辑大小(非磁盘占用)
-L统计符号链接指向的目标大小

常见用法示例

查看当前目录总大小

du -sh

输出:

12G    .

查看当前目录及其子目录占用空间

du -h

输出示例:

4.0K    ./cache
2.5G    ./projects/code
8.2G    ./projects

只显示当前目录总占用空间

du -sh

输出示例:

100M    .

查看目录下每个文件和子目录的大小

du -ah

查看某目录深度为 1 的大小分布

du -h --max-depth=1

du -h -d 1

适用于按模块查看空间占用情况,非常适合查找“哪个目录最大”。

查看某目录并排除日志文件

du -h --exclude="*.log"

查看多个目录的总大小

du -ch dir1 dir2

输出中会显示每个目录的大小,最后一行是总计(total)。

统计单个文件的磁盘占用

du -h filename

注意:du 显示的是文件实际占用磁盘的空间,而不是逻辑文件大小(逻辑大小可通过 ls -l 查看)。


进阶技巧与常见问题

文件逻辑大小 vs 磁盘占用

  • 逻辑大小:文件实际内容长度(ls -l 显示的值)。
  • 磁盘占用:文件占用的块空间(du 默认值)。

示例:

echo "1" > small.txt   # 创建 1 字节文件
ls -l small.txt        # 输出:1 (逻辑大小)
du -h small.txt        # 输出:4.0K(块大小)
du --apparent-size -h small.txt  # 输出:1

符号链接处理

  • 默认行为:统计链接指向的文件大小。
  • 仅统计链接自身:去掉 -L 参数。
du -sh /usr/bin/python   # 统计 Python 可执行文件大小
du -shL /usr/bin/python  # 同上(显式解除引用)

快速定位大文件

结合 findsort

find /home -type f -size +500M -exec du -h {} + | sort -rh

输出:

3.5G    /home/user/videos/movie.mp4
2.9G    /home/user/backup.tar.gz

自动化清理实战

定期清理旧日志

脚本 /scripts/clean_logs.sh

#!/bin/bash
# 删除 /var/log 下 30 天前的日志
find /var/log -name "*.log" -mtime +30 -exec rm -f {} \;

添加定时任务:

crontab -e
# 每天凌晨 2 点执行
0 2 * * * /scripts/clean_logs.sh

清理空目录

删除 7 天内未被访问的空目录:

find /data/tmp -type d -empty -atime +7 -delete


du 和 df 的区别

命令功能使用层级
du显示文件/目录占用的磁盘空间具体到目录或文件
df显示整个文件系统的磁盘使用情况文件系统级别

因此,当你想分析“哪个目录占了太多空间”时,用 du;当你想知道“磁盘还剩多少空间”时,用 df


实战:查找占用空间最多的目录

结合 sortdu 使用:

du -h --max-depth=1 | sort -hr | head -n 10

这条命令将列出当前目录下占用空间最多的前 10 个目录,非常适合快速分析磁盘空间瓶颈。


总结

du 是一个功能强大又轻量的命令,掌握其用法可以帮助我们快速定位磁盘空间的使用情况,是每个 Linux 用户的必备技能之一。

建议你在日常工作中,多尝试将 dusortheadfind 等命令组合使用,打造属于自己的空间分析工具链。

相关文章:

  • Prometheus实战教程:k8s平台-Mysql监控案例
  • 15 C 语言字符类型详解:转义字符、格式化输出、字符类型本质、ASCII 码编程实战、最值宏汇总
  • gflags 安装及使用
  • 企业品牌宣传新闻媒体发稿策略与长效运营
  • 从验证码绕过到信息轰炸:全面剖析安全隐患与防范策略
  • 25考研经验贴(11408)
  • 动态规划-63.不同路径II-力扣(LeetCode)
  • 一发入魂:极简解决 SwiftUI 复杂视图未能正确刷新的问题(中)
  • 大模型技术发展全景报告:架构演进、应用落地与未来挑战
  • 专业版降重指南:如何用Python批量替换同义词?自动化操作不香嘛?
  • AG-UI 协议:重构多模态交互,开启智能应用新纪元
  • 游戏AI研究所-Stable Diffusion中LoRA(Low-Rank Adaptation)的定义及权重的作用机制
  • 【流程控制结构】
  • ReinboT:通过强化学习增强机器人视觉-语言操控能力
  • Mac上安装运行SynthTIGER
  • C++跨平台开发:突破不同平台的技术密码
  • uniapp-商城-60-后台 新增商品(属性的选中和页面显示)
  • 架构选择、区别
  • 学习51单片机02
  • 麒麟服务器操作系统安装 MySQL 8 实战指南
  • 中国新闻发言人论坛在京举行,郭嘉昆:让中国声音抢占第一落点
  • 病愈出院、跳大神消灾也办酒,新华每日电讯:农村滥办酒席何时休
  • 小雨伞保险经纪母公司手回集团通过港交所聆讯
  • 舱位已排到月底,跨境电商忙补货!美线订单大增面临爆舱,6月运价或翻倍
  • 龚正市长调研闵行区,更加奋发有为地稳增长促转型,久久为功增强发展后劲
  • 证监会发布《上市公司募集资金监管规则》,6月15日起施行