一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

文件系统空间释放技巧:寻找大文件与删除策略

时间:2026-07-02 10:22:48 编辑:袖梨 来源:一聚教程网

磁盘空间告警时应按“定位→判断→安全释放”流程处理:先用df -h确定满载分区,再用du -shx和find精准定位大文件,最后通过lsof验证、truncate清空或journalctl等安全清理。

磁盘空间告警时,直接删文件往往不释放空间,尤其当文件正被进程占用——删的是目录项,但 inode 和数据块仍被持有。真正有效的清理,是“定位 → 判断 → 安全释放”,而不是“找到就删”。

快速定位真实占用大户

别一上来就 find / -size +1G:它会卡在 /proc、/sys,还可能跨挂载点误扫 NFS 或容器卷。更稳的起点是:

  • 先用 df -h 看哪块分区满了,再针对性查,比如 df -h /var
  • 查一级子目录总和:du -shx /* 2>/dev/null | sort -hr | head -5(-x 防跨分区,2>/dev/null 屏蔽权限错误)
  • 怀疑日志或缓存时,限定路径:du -shx /var/log/* /tmp/* 2>/dev/null | sort -hr | head -10

精准找出单个超大文件

du 只能看目录级汇总,真正“吃空间”的常是单个暴增文件(如 nohup.out、core dump、滚动日志)。用 find 更准:

  • 查大于 1G 的普通文件:find /var -xdev -type f -size +1G -ls 2>/dev/null
  • 加时间过滤避开活跃日志:find /tmp -type f -size +500M -mtime +7 -ls
  • 只看前几条预览:find /home -type f -size +2G -print | head -n 3,确认路径再操作

删之前必须确认三件事

误删可能中断服务或丢失数据,动手前务必验证:

  • 是否被进程打开? 运行 lsof /path/to/file 或 lsof +L1(查已删但未释放的文件)
  • 是否属于当前分区? df /path/to/file 确认路径归属,避免删错挂载点
  • 是否可安全清空而非删除? 对正在写入的日志,优先用 truncate -s 0 /path/to/file 或 > /path/to/file,保留句柄不中断服务

安全删除与替代方案

确认无风险后,再执行清理:

  • 交互式删除(推荐):find /path -name "*.log" -size +100M -ok rm -f {} ;,每删一个都确认
  • 批量删但限范围:find /var/log -name "old_*.log" -mtime +30 -delete
  • 系统级日志别硬删:journalctl --vacuum-size=300M 清 systemd 日志,logrotate 配置自动轮转

热门栏目