先用df -h确认/usr所在分区使用率是否超85%,若未告急则无需深挖;再用du -sh */ 2>/dev/null | sort -hr定位/usr下一级大目录,结合find -xdev -type f -size +100M和lsof +L1 | grep '/usr'排查大文件及已删除但未释放的占用。

直接用 du -sh /usr 就能快速看到整个 /usr 目录占了多少空间。但要真正查清“谁在吃掉空间”,得配合层级下钻和排除干扰项,避免被挂载点、符号链接或已删除但未释放的文件误导。
先确认 `/usr` 所在分区是否真紧张
运行 df -h,看 /usr 对应的挂载点(通常是 / 或 /usr 单独挂载)使用率是否超过 85%。如果整体还很宽松,就不用急着深挖——/usr 占大是正常现象,它本就是系统软件主目录。
统计 `/usr` 下一级子目录大小
进入 /usr 后执行:
-
du -xh --max-depth=1 . 2>/dev/null | sort -h:加
-x跳过其他文件系统(比如挂载的/usr/local若单独挂载就不会混入) - du -sh */ 2>/dev/null | sort -hr:更简洁,只列目录,按大小倒序
常见大户包括 /usr/lib(含库文件和内核模块)、/usr/share(文档、图标、locale)、/usr/bin 和 /usr/sbin(可执行文件本身不大,但某些打包工具会把冗余副本放这儿)。
定位具体大文件或异常增长点
对可疑子目录继续下钻,例如:
- du -xh --max-depth=2 /usr/lib 2>/dev/null | sort -h | tail -15
- 找大于 100MB 的文件:find /usr -xdev -type f -size +100M -ls 2>/dev/null | sort -k7nr | head -10(
-xdev确保不跨分区)
特别注意:/usr/src 可能残留旧内核源码;/usr/lib/firmware 在更新后有时不自动清理旧固件;某些第三方软件(如 JetBrains 工具箱、Docker Desktop)会把缓存或镜像写进 /usr/local 或 /usr/share 子目录。
别漏掉“看不见”的占用
有些空间被进程持有但文件已被删除,du 统计不到,df 却显示已用:
- 查已删但仍在使用的文件:lsof +L1 | grep '/usr'
- 若发现类似
node (deleted)或java (deleted)的条目,重启对应服务即可释放
不复杂但容易忽略


















