首页/系统/Linux 运维命令速查/场景:已删除文件仍占空间
进程与作业69 条

场景:已删除文件仍占空间

df 显示磁盘满但 du 找不到大文件:进程还拿着「已删除」的文件句柄(日志被删/轮转错误常见),lsof +L1 揪出来。

Linux 运维命令速查系统更新于 2026-10-12
场景df 与 du 不一致 / 空间没释放
组合lsof +L1 + /proc/PID/fd + 重启或截断

找出罪魁

找出罪魁
lsof +L1 | sort -k7 -rn | head -10   # 已删除仍打开(SIZE/OFF 列)
lsof +L1 | awk '$7 > 1073741824' | head   # 大于 1G 的重点关注
# 从 fd 反查(更快):
ls -l /proc/1234/fd | grep deleted | head

释放空间

释放空间
# 优雅选择:重启持有者进程(业务允许时)
# 或让应用重新打开日志:先确认应用语义,再:
kill -USR1 <pid>        # 很多服务用 USR1 重开日志(nginx 等)
ls -l /proc/1234/fd | grep deleted   # 复核是否释放
不要手动删 /proc/PID/fd 下的链接当作常规手段(cp /dev/null 到 fd 路径更接近截断),操作前确认应用行为。

易错点

  • du 统计不到已删句柄:df 满而 du 少时优先查这里
  • 截断大文件会瞬时产生 IO 高峰:高峰期操作注意影响

数据来源与参考

  • man 8 lsof(lsof 官方手册)
  • man 5 proc

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌