搜索结果

×

搜索结果将在这里显示。

🌻 查找大目录:du|find|ncdu

在 Linux 中查找大目录,最核心的工具是 du​(Disk Usage),结合 sort 进行排序。针对日常巡检,这里为你整理了几种最实用的方法和命令,按场景分类。


📋 核心命令速查表

使用场景 推荐命令 说明
查看根目录下最大的子目录 sudo du -sh /* 2>/dev/null \| sort -rh \| head -10 忽略权限报错,直观显示前10名大小。
查看当前目录下的一级子目录大小 du -h --max-depth=1 \| sort -hr 最常用的命令,快速定位“谁占用了当前空间”。
递归查看最深子目录的总大小 du -ah /path \| sort -rh \| head -20 会列出目录下所有文件和子目录的大小(非常耗时)。
交互式可视化探索(推荐) ncdu / 需要安装(yum/apt install ncdu),方向键交互,极其好用。
查找超过指定大小的目录/文件 find / -type d -exec du -sh {} + 2>/dev/null \| sort -rh 灵活组合,但效率较低,谨慎使用。

  • 实战详解

    • 查看根目录下最大的子目录
    sudo du -sh /* 2>/dev/null | sort -rh | head -10

    image

    1. 最常用:查看当前目录下各子目录大小(一层)

    如果想快速知道当前目录下,哪个子文件夹最大,这是首选:

    du -h --max-depth=1 | sort -hr #--max-depth=1 只深入一层;sort -hr 按人类可读单位排序

    如果要查特定目录(如 /var),可以改为:

    du -h --max-depth=1 /var | sort -hr

    2. 最佳实践:查看根目录下最大的前 N 个项目(巡检常用)

    直接对根目录执行扫描时,务必跳过虚拟文件系统(如 /proc​、/sys),否则会报错或卡死:

    # 使用 -x 参数限制在同一文件系统,或者用 --exclude 排除
    sudo du -sh /* --exclude=/proc --exclude=/sys --exclude=/dev 2>/dev/null | sort -rh | head -10

    如果知道是某个挂载点(比如 /home)空间满了,直接查它:

    sudo du -h --max-depth=1 /home | sort -rh

    3. 交互式神器:ncdu(强烈推荐)

    ncdu​ 是一个基于终端的磁盘分析工具,比纯命令行更直观。你可以用上下键浏览,按 d​ 删除,按 n 排序。

    # 安装(如果没有的话)
    # Ubuntu/Debian: sudo apt install ncdu
    # CentOS/RHEL: sudo yum install ncdu
    
    # 扫描根目录(注意加 -x 只扫当前分区,避免扫描 /proc)
    sudo ncdu -x /

    扫描完成后,界面会列出所有目录,按大小排序,点击进入子目录继续下钻,非常适合定位“隐藏的大文件”。

    4. 彻底排查:结合 find 查找超大文件

    有时目录大是因为里面有几个巨大的文件。此时应直接查文件:

    # 查找根目录下大于 500M 的文件,并排序显示
    sudo find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null | awk '{print $5, $9}' | sort -hr

    或者更简洁的版本(列出前20大文件):

    sudo find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -20

  • 高级巡检技巧

    • 快速统计总大小:查看整个目录占用空间时,不需要列出子项:
    sudo du -sh /var/log
    • 按文件类型排查:有时候日志目录占用大,但全是小文件(inode占满)。先看目录数量:
    # 统计 /var 下子目录的数量
    sudo ls -lR /var | grep "^d" | wc -l
    • 检查挂载点是否独立:如果 /​ 满了,但 /data​ 是独立挂载的,查根目录时应使用 -x 参数,避免跨分区统计:
    sudo du -shx /* 2>/dev/null | sort -rh | head -10
  • ⚠️ 注意事项

    1. 务必使用 sudo​:否则没有权限读取某些目录(如 /root),可能导致统计遗漏。
    2. 不要在高峰期运行全盘扫描du 会大量消耗磁盘 I/O,建议在业务低峰期执行。
    3. 善用 --exclude​:扫描根目录时,务必排除 /proc​、/sys​、/dev,避免死循环或大量报错。

    一句话总结:日常巡检优先用 du -h --max-depth=1 /path | sort -hr​ 快速下钻,遇到复杂情况直接装 ncdu 交互式排查,效率最高。

阅读:188
发布时间: