文件被删但进程还打开着,df 仍认为块被占用,空间自然不降。
用 lsof 加 grep deleted 找出持有句柄的进程和文件。
重启或 reload 那个进程,句柄一释放空间立刻回收。
不能重启就临时挂 gdb 调进程,把对应描述符截断清零。
# 找出持有已删除文件的进程
lsof +L1 | grep deleted
# 或
lsof -nP | grep '(deleted)'
# 优先:reload / restart 该进程
systemctl restart nginx
# 兜底(谨慎,先在测试环境验证):
gdb -p <PID> -batch -ex 'call truncate("/proc/<PID>/fd/<FD>", 0)'
THE END






暂无评论内容