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

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 等命令组合使用,打造属于自己的空间分析工具链。

http://www.xdnf.cn/news/6640.html

相关文章:

  • 详解具身智能开源数据集:RH20T
  • Maven使用详解:Maven的概述(二)
  • 单片机-STM32部分:18、WiFi模组
  • 真题卷001——算法备赛
  • 小结:JavaScript 模块化工具链
  • 傅里叶变换实战:图像去噪与边缘提取
  • 锚点跳转跟踪#
  • Web-CSS入门
  • ci/cd全流程实操
  • 2025年全国青少年信息素养大赛复赛集训(2):寻找250(题目及解析)
  • Perl测试起步:从零到精通的完整指南
  • 【Python】【OCR识别】 提取图片文字并根据内容智能分类存储
  • C#运算符
  • 大语言模型与多模态模型比较
  • 【笔记】cri-docker.service和containerd
  • 特斯拉虚拟电厂:能源互联网时代的分布式革命
  • [IMX] 01.IVT 表长度计算
  • 考研408《计算机组成原理》复习笔记,第二章(2)数值数据的表示(浮点数篇)
  • 【springboot项目服务假死、内存溢出问题排查】
  • shell-awk
  • TVS管用万用表测量方法详解(含二极管档使用指南)
  • 【微信小程序】webp资源上传失败
  • 告别碎片化!MCP 带来 AI Agent 开发生态的革命性突破
  • Qt之QMessageBox
  • 【RabbitMQ】实现RPC通信的完整指南
  • 浅谈算法中的贪心策略:从直觉到策略的思维跨越
  • ios打包ipa获取证书和打包创建经验分享
  • (独家)SAP CO模块中 销售发票对应的Cost Document中的PSG对象是什么东东??
  • leetcode0621. 任务调度器-medium
  • 论QT6多线程技术