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

您的位置: 首页 > 文章列表 > 系统应用 > CentOS 7如何查看当前系统最大的文件大小

CentOS 7如何查看当前系统最大的文件大小

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

扫一扫,手机访问

要找出最大文件,最稳妥的办法还是把du和find配合起来用:先用du -ah | sort -hr做一轮定位,快速把体积大的目标揪出来;再用find -type f -size +阈值做精确筛选,直接锁定超出范围的文件,这两者刚好互补。相比之下,ls -lS只适用于当前目录,而且看不出真实的磁盘占用情况,关键的大文件很容易就漏掉。

CentOS 7如何查看当前系统最大的文件大小

直接查最大的文件,du + find 是最可靠的方式;ls -lS 只能看当前目录,且不递归、不处理硬链接、不反映真实磁盘占用,容易漏掉真正吃空间的文件。

用 find 找出整个系统中最大的文件(慎用)

全盘扫描开销大、耗时长,且可能因权限不足中断。建议限定路径,比如只查 /var/home/tmp

  • find /var -type f -size +100M -exec ls -lh {} ;:列出所有大于 100MB 的文件,带可读大小和路径
  • 2>/dev/null 忽略权限错误:find /var -type f -size +100M -exec ls -lh {} ; 2>/dev/null
  • 若要严格按大小排序取前 10:find /var -type f -printf '%s %pn' 2>/dev/null | sort -nr | head -10 | awk '{print $2}' | xargs -r ls -lh

注意:-printf '%s %pn' 输出的是字节数,sort -n 按数值排,-r 倒序;awk 提取路径再用 ls -lh 补充可读格式。

用 du 配合 sort 查当前目录下最大文件(推荐日常用)

du 天然支持统计文件(不只是目录),但默认不显示单个文件——得加 -a

  • du -ah . | sort -hr | head -20:列出当前目录及子目录下所有文件+目录,按大小倒序取前 20
  • du -ah --max-depth=1 . | sort -hr | head -10:只查当前层(不含深层嵌套),更快更聚焦
  • 如果只想看文件(排除目录),加 grep -v '/$'du -ah . | grep -v '/$' | sort -hr | head -10

关键点:-hsort -h 必须配套,否则 1K234M2G 会被当字符串排序,结果错乱。

为什么不用 ls -lS?

ls -lS 乍一看很直接,实际上它只负责三件事:把当前目录里的条目列出来、按照 ls 输出中的 size 字段进行排序、而且既不递归,也不会统计硬链接的真实占用;另外,这里的 size 指的是逻辑大小,不是磁盘块实际占用。也正因为如此,常见的误区往往就出在这里:

  • 一个 2GB 的稀疏文件(dd if=/dev/zero of=sparse bs=1G seek=1 count=0)用 ls -l 显示 0 字节,du -h 才反映实际磁盘占用
  • 日志轮转后残留的已删除但进程仍打开的文件,ls 根本看不到,du 也统计不到,只有 lsof + /proc/*/fd 能揪出来
  • ls -lS 不处理符号链接目标,du -L 才能穿透软链算源文件大小

真正吃空间的大文件常藏在哪?

别一上来就扫全盘。先用 df -h 看哪个挂载点快满了,再针对性查:

  • df -h | grep '9[0-9]%|100%':快速定位高使用率分区
  • 对应分区下优先查:/var/log(尤其 journaldnginxmysql 日志)、/var/spool(邮件队列、打印缓存)、/root/home/* 下的临时包/镜像/数据库 dump
  • 查完记得确认是否被进程占用:lsof +L1 /var/log 看是否有已删但仍 open 的日志文件

最大文件往往不在显眼路径,而是在服务默认数据目录深处,或者被重命名隐藏(如 .old.bak~ 结尾)——find-name-regex 配合更有效。

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

热门关注