Linux下du命令如何查看磁盘占用?

Linux下的du(disk usage)命令是用于估算文件和目录磁盘使用空间的实用工具,它通过递归遍历指定路径下的文件和子目录,计算其占用的磁盘块数量,并以用户可读的格式展示结果,该命令在系统管理、磁盘空间排查、日志分析等场景中广泛应用,掌握其用法对于高效管理Linux系统至关重要。

linux下du命令
(图片来源网络,侵删)

du命令的基本语法

du命令的基本语法结构为:du [选项] [文件或目录],若未指定文件或目录,默认会显示当前目录下所有子目录及文件的磁盘使用情况,结果以字节为单位输出,在终端输入du并回车,系统会列出当前目录每个子目录的磁盘占用,但这样的输出通常包含大量冗余信息,实际使用时需结合选项进行过滤和格式化。

常用选项及功能说明

du命令的丰富选项使其能够灵活适应不同需求,以下是核心选项的详细解析:

选项全称功能描述示例
-hhuman-readable以人类可读格式显示(如K、M、G)du -h /var/log
-a–all显示所有文件(默认仅显示目录)du -a
-s–summarize仅显示总计值,不显示子目录详情du -sh /home
-c–total显示总计行,汇总所有输入参数的总和du -ch dir1 dir2
-L–dereference-args解析符号链接指向的文件大小du -L symlink_dir
–max-depth=N限制递归深度为N层du --max-depth=1 /etc
-x–one-file-system跳过其他文件系统的目录du -x /mnt
-B–block-size=SIZE指定块大小(如KB、MB)du -BMB 1024 /tmp
–exclude=PATTERN排除匹配模式的文件du --exclude="*.log"
-t–threshold=SIZE仅显示超过指定大小的文件/目录du -t 10M

高级用法与实际应用场景

  1. 磁盘空间排查
    当发现磁盘空间不足时,可使用du -sh /*快速扫描根目录下各主要分区的占用情况,定位异常目录,若/var目录占用过高,可进一步用du -sh /var/* | sort -hr按占用大小排序,快速找到大文件或日志目录。

  2. 日志文件管理
    在运维中,常需清理过期日志,通过du -sh --exclude="*.gz" /var/log/nginx可排除压缩日志,查看原始日志占用;结合find命令可实现批量清理,如find /var/log -name "*.log" -mtime +30 -exec du -ch {} + | grep total

    linux下du命令
    (图片来源网络,侵删)
  3. 限制递归深度
    对于大型目录(如/usr),全量扫描耗时较长,使用du --max-depth=2 /usr可仅查看两级子目录的占用,快速定位大容量目录。

  4. 排除特定文件类型
    在代码仓库中,可通过du -sh --exclude=".git" --exclude="node_modules" .排除版本控制和依赖目录,获取项目实际代码大小。

  5. 跨文件系统扫描
    当挂载多个磁盘时,du -x /data可避免统计其他文件系统的目录(如/data/mnt/other_disk),确保结果准确反映当前文件系统的占用。

输出格式与单位控制

默认情况下,du以字节为单位输出,难以直观理解,通过-h选项可自动转换为KB、MB、GB等单位,如du -h dir显示2G dir,若需自定义单位,可使用--block-size,例如du -BKB 1024 file以1024字节块为单位显示,结合sort -hr可实现按大小倒序排列,如du -sh /* | sort -hr

linux下du命令
(图片来源网络,侵删)

注意事项与常见陷阱

  1. 符号链接处理:默认情况下,du统计符号链接本身的大小(通常为4KB),若需统计其指向文件的实际大小,需加-L选项。
  2. 性能影响:对大目录(如/proc)递归扫描可能导致高I/O负载,建议结合--max-depth限制范围。
  3. 块大小差异:不同文件系统的块大小(如4KB、8KB)会影响统计结果,-B选项可统一计算基准。
  4. 权限问题:若遇到Permission denied错误,可使用sudo dudu --ignore-access-denied(需GNU coreutils支持)。

相关问答FAQs

问题1:如何使用du命令查找大于100MB的文件?
解答:可通过find命令结合du实现,具体命令为:find /path -type f -exec du -h {} + | grep -E '^[0-9.]+[MG]' | sort -hrfind定位所有文件,du -h以人类可读格式显示大小,grep过滤出大于100MB的文件(M/G单位),sort -hr按大小倒序排列。

问题2:为什么du显示的磁盘占用与df不一致?
解答:两者统计逻辑不同。du从文件系统角度统计实际文件占用的数据块(包括间接块等),而df从块设备角度统计已分配的块数(包含文件元数据、预留空间等),常见差异包括:du不统计未使用的块,df包含文件系统元数据开销;du可能因进程正在写入文件导致统计延迟;du默认跳过挂载点目录,而df会统计整个挂载设备,可通过du -x --exclude=lost+founddf -h对比,减少差异影响。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/372452.html<

(0)
运维的头像运维
上一篇2025-09-29 13:15
下一篇 2025-09-29 13:21

相关推荐

  • total命令功能具体有哪些?

    total命令是Linux和Unix-like系统中一个用于计算文件行数、单词数和字节数的实用工具,其名称来源于“total”(总计)的缩写,暗示了它能够对文件内容进行统计汇总,该命令是文本处理和数据分析中常用的基础工具,尤其在日志分析、文档审阅和数据校验等场景中发挥着重要作用,以下将从基本功能、常用选项、实际……

    2025-11-18
    0
  • du命令如何快速查看目录大小?

    du命令是Linux和Unix系统中用于估算文件和目录磁盘使用空间的实用工具,通过它可以快速了解特定目录或文件占用的存储容量,尤其在管理磁盘空间时发挥着重要作用,使用du命令查看目录时,基本语法为du [选项] [目录名],如果不指定目录,默认会显示当前目录下各子目录及文件的磁盘使用情况,常用选项及功能为了更精……

    2025-11-17
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注