在Linux系统中,du(disk usage)命令是用户和管理员日常管理磁盘空间的重要工具,它通过递归地计算指定文件或目录所占用的磁盘空间,帮助用户快速定位存储资源的使用情况,从而进行有效的空间清理和优化。du命令的灵活性和丰富的选项使其成为Linux命令行中不可或缺的一员。

基本用法与核心功能
du命令的基本语法为du [选项]... [文件或目录]...,如果不带任何选项和参数执行du,它会显示当前目录下每个子目录的磁盘使用量,结果以块(block)为单位,每个块默认为1024字节,在用户主目录下执行du,会列出所有一级子目录的空间占用情况,但通常不会显示总计值。
要查看特定目录的空间占用,可以直接将目录路径作为参数。du /var/log会显示/var/log目录及其所有子目录的磁盘使用情况,若需查看单个文件的空间占用,du同样适用,例如du large_file.iso会返回该文件的实际大小。
常用选项解析
du命令的选项极大地扩展了其功能,使其能够适应不同的使用场景,以下是一些最常用的选项及其作用:
-h(human-readable):以人类可读的格式显示文件大小,如K(千字节)、M(兆字节)、G(吉字节)等。du -h /home会以更直观的方式展示各目录的空间占用。-s(summarize):仅显示总计值,即指定目录的总空间占用,不显示子目录的详细信息。du -sh /usr会直接输出/usr目录的总大小。-a(all):显示所有文件的空间占用,而不仅仅是目录,默认情况下,du不显示文件信息,此选项可弥补这一不足。--max-depth=N:限制递归的深度为N层。du --max-depth=1 /home会只显示/home下一级目录的大小,而不会深入更深层级的子目录。--exclude=PATTERN:排除与指定模式匹配的文件或目录。du -sh --exclude="*.log" /var/log会排除所有.log文件后计算剩余目录的大小。
实用示例与场景应用
通过组合不同的选项,du命令可以解决实际中的多种问题,以下是一些常见场景的示例:
-
查找占用空间最大的目录
要快速定位系统中占用空间最大的目录,可以结合sort和head命令。
du -h /home | sort -hr | head -10
该命令会以人类可读的格式显示
/home目录下占用空间最大的前10个目录。-hr表示按人类可读的数值进行反向排序。 -
清理日志文件前的空间评估
在清理/var/log目录前,可以使用du评估各日志文件的大小:du -ah --exclude="*.gz" /var/log | grep -E "^\s*[0-9\.]+[KMG]"
此命令会显示
/var/log目录下所有非压缩文件的大小,帮助用户识别需要清理的大文件。 -
监控特定用户的空间占用
若需查看某个用户主目录的空间使用情况,可以执行:du -sh /home/username
若需进一步分析该用户目录下的文件分布,可结合
--max-depth选项限制递归层级。
与df命令的区别
新手常将du与df命令混淆,两者的功能和适用场景有明显区别。du用于计算文件和目录的实际占用空间,而df(disk free)则用于显示文件系统的整体磁盘使用情况,包括已用空间、可用空间、挂载点等信息。du关注“文件占用了多少空间”,而df关注“分区的空间还剩多少”。df -h会显示根分区的总大小、已用空间和剩余空间,而du -sh /则会显示根目录下所有文件和目录的实际占用总和(可能小于df显示的已用空间,因为df会考虑文件系统元数据等开销)。
注意事项与最佳实践
使用du命令时,需要注意以下几点:
- 递归性能:对于包含大量文件的目录,
du的递归计算可能耗时较长,此时可通过--max-depth限制递归层级或使用-x选项限制在单一文件系统内计算。 - 符号链接处理:默认情况下,
du会跟随符号链接计算目标文件的大小,若需避免此行为,可使用-l选项。 - 单位一致性:在比较不同目录的大小时,确保使用相同的单位(如
-h选项),以避免因单位不同导致的误解。
du命令作为Linux磁盘管理的利器,通过灵活的选项组合和高效的数据统计,为用户提供了强大的空间分析能力,无论是日常维护还是系统调优,掌握du命令的使用方法都能帮助用户更精准地掌握磁盘资源的使用情况,从而优化存储空间的管理效率,结合其他命令(如sort、grep),du的功能可以进一步扩展,满足更复杂的分析需求,是Linux用户不可或缺的工具之一。


















