linux du是Linux系统中用于统计文件和目录磁盘使用量的命令行工具,它的全称是disk usage,和df命令不同,df主要查看文件系统的整体磁盘使用情况,而du可以深入到具体的文件、目录层级,精准统计每个目标占用的实际磁盘空间,是排查磁盘占用异常、清理冗余文件的重要工具。

du命令的基本语法
du命令的基础语法格式如下:
du [选项] [文件或目录路径]
如果不指定文件或目录路径,默认会统计当前工作目录下所有子目录的磁盘使用量。
du命令的常用参数
du支持很多实用参数,以下是日常使用频率较高的几个:
- -h:以人类可读的格式显示结果,自动换算单位,比如K、M、G,方便直观查看。
- -s:仅显示指定目录或文件的总大小,不列出子目录的详细占用情况。
- -a:显示所有文件和目录的磁盘使用量,默认只会统计目录的大小。
- -c:在统计结果最后显示所有目标的总大小。
- --max-depth=N:限制统计的目录层级深度,N为数字,比如设置为1就只统计当前目录下的直接子目录,不深入更深的层级。
du命令的实际使用示例
示例1:查看当前目录总大小
如果只需要知道当前目录整体占用了多少磁盘空间,可以结合-s和-h参数:
du -sh .
执行后输出类似2.3G .,表示当前目录总大小为2.3G。
示例2:查看指定目录下所有子目录的大小
要查看/home目录下每个直接子目录的占用情况,可以使用以下命令:
du -h --max-depth=1 /home
输出会列出/home下每个一级子目录的大小,以及对应的目录名,方便快速定位占用空间大的目录。
示例3:统计多个文件的总大小
如果需要统计多个指定文件的总大小,可以结合-c参数:
du -ch file1.txt file2.log /var/log/syslog
执行后不仅会显示每个文件的大小,最后还会有一行总用量的汇总结果。
示例4:查看当前目录下所有文件的占用情况
要列出当前目录下所有文件和目录的详细占用,使用-a参数:
du -ah .
输出会包含当前目录下每个文件、每个子目录的大小,适合需要逐层排查大文件的场景。
du和df命令的区别
很多用户会混淆du和df的作用,两者的核心差异如下:
| 对比项 | du命令 | df命令 |
|---|---|---|
| 统计对象 | 具体文件、目录的磁盘使用量 | 整个文件系统的磁盘使用情况 |
| 统计逻辑 | 基于文件的实际大小统计 | 基于文件系统的块分配情况统计 |
| 适用场景 | 排查具体目录、文件的占用问题 | 查看磁盘整体剩余空间、文件系统挂载情况 |
如果删除大文件后df显示的空间没有释放,通常是因为文件还被进程占用,这时候du统计不到该文件,就会出现du和df结果不一致的情况,需要排查占用文件的进程并重启相关服务才能释放空间。