商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Linux怎么查看大文件占用深度扫描建议

Linux怎么查看大文件占用深度扫描建议

  发布于2026-08-19 阅读(0)

扫一扫,手机访问

du -hx --max-depth=1 / | sort -hr 必须加 -x 防跨挂载点扫描失真,加 2>/dev/null 避免 Permission denied 干扰排序;find 查大文件需严格大小写、-type f 和 -xdev。

Linux怎么查看大文件占用深度扫描建议

du -h --max-depth=1 为什么必须加 -x 和 2>/dev/null

若不加 -xdu 就会跨挂载点扫描,像 /mnt/proc 或 Docker overlay2 挂载目录这些地方都可能会被误闯,结果不仅会失真,甚至可能卡死;而如果不加 2>/dev/null ,大量的 Permission denied 错误行就会混入其中,对排序造成干扰——尤其是在扫描 / 时,这些错误可能比有效数据还要多得多。

正确的操作姿势为:sudo du -hx --max-depth=1 / | sort -hr。其中,-h用于输出可读单位,-x可锁定当前文件系统,--max-depth=1能控制仅查看一级子项,而只有使用sort -hr才能按GB/MB正确倒序排列(-n会将10G当作字符串排在2G之前)。

find -size +1G 找不到文件?检查大小写和 -type f

find 对大小写敏感:+1G 中的 G 必须大写,小写 +1g 会被忽略;+100M 合法,但 +100m 表示 512 字节块,实际约 50KB,完全不是“大文件”。

  • 必须加 -type f:否则会匹配到目录、设备文件、socket,甚至 /proc 下的伪文件
  • 必须加 -xdev:防止跨分区扫描,比如从 / 开始却扫进 NFS 或 USB 挂载点
  • 想带路径和大小一起看?用 find /var -xdev -type f -size +500M -ls,比 -exec ls -lh {} ; 更快、更稳定

ncdu 扫描时为什么建议加 -x 参数

ncdu 默认会递归所有子挂载点,如果系统挂了外接硬盘、NFS 或 Docker overlay2,它会把那些空间也计入根目录统计,导致你误判“/var/lib/docker 占了 80G”,其实那 80G 是另一个挂载设备上的数据。

执行 sudo ncdu -x / 才真正只统计根文件系统本身。配合 df -h 先确认哪个挂载点满了,再针对性扫——比如 df -h 显示 /home 使用率 98%,那就直接 ncdu /home,别扫全盘。

du 和 find 结果对不上?可能是硬链接或已删除未释放文件

du -sh /var/log 显示 4G,但 find /var/log -type f -size +10M 只找出几个小文件——这不是命令错,而是统计逻辑不同:

  • du 统计磁盘块占用(硬链接只算一次),find -size 查的是文件逻辑大小(每个硬链接都算一份)
  • 更常见的是“幽灵文件”:进程还在写一个已被 rm 的日志,路径没了但 inode 没释放,du 计入,find 找不到
  • 验证是否存在这类文件:lsof +L1,它会列出所有 size > 0 且 link count = 0 的打开文件

真正要清理的是磁盘块,不是文件名长度;所以优先信 du,但查不到对应文件时,lsof +L1 是最后一道排查手段。

本文转载于:https://www.php.cn/faq/3014498.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注