Linux 查找大文件快速释放磁盘空间

1次阅读

查大文件清空间关键在“快准稳”:先用df -h定位满载挂载点,再用du和find逐层查找大文件,接着用lsof检查已删未释放文件,最后安全清空或删除并配置logrotate预防复发。

Linux 查找大文件快速释放磁盘空间

查大文件、清空间,关键在“快准稳”——先定位瓶颈,再删得干净,避免删了还占空间。

第一步:看哪块盘满了

运行 df -h,一眼锁定使用率接近 100% 的挂载点(比如 //var)。注意看 Use% 列,别只盯 Avail 数值。如果根目录告急,后续所有操作都围绕 / 展开。

第二步:定位大目录和大文件

进入高占用挂载点(如 cd /),执行:

  • du -sh * 2>/dev/NULL | sort -hr | head -n 10 —— 快速列出当前层前 10 大目录/文件
  • 进到可疑大目录(如 /var/log),重复上一步,逐层下钻
  • 想直接扫全系统前 10 大文件?用:
    find / -xdev -type f -size +100M 2>/dev/null -print0 | xargs -0 du -h | sort -hr | head -n 10
    -xdev 防止跨分区搜索,2>/dev/null 屏蔽权限报错)

第三步:删之前确认是否还在被进程占用

常见陷阱:删了日志文件,df -h 空间却不释放。原因往往是进程仍在往已删除文件的 inode 写入。

  • 检查某路径下是否有“已删但未释放”的文件:
    lsof +L1(显示链接数为 0 的打开文件)
  • 或针对具体目录查:
    lsof | grep ‘/var/log’ | grep deleted
  • 看到结果后,要么重启对应服务(如 systemctl restart rsyslog),要么 kill 进程(kill -HUP PIDkill -9 PID

第四步:安全清理与预防

别一上来就 rm -rf,先确认内容:

  • 日志类文件(*.logcatalina.outmessages)可清空:
    truncate -s 0 filename(比删除更安全,不中断进程)
  • 备份或临时文件(*.tar.gz*.tmp/tmp/*)确认无用后再删
  • 启用日志轮转(logrotate)防止复发,配置示例可加到 /etc/logrotate.d/

整个过程不需要额外安装工具,核心命令都是系统自带。重点不是命令多炫,而是顺序不能乱:看空间 → 锁目录 → 找文件 → 查占用 → 再清理。

text=ZqhQzanResources