0%

Linux文件句柄未释放

事件起因

今天早晨系统告警磁盘空间不足,因为某个服务一直在刷错误日志,磁盘爆了,我把容器删除重新起了一个。

df -h后磁盘空间没有释放

du -sh统计没有占用那么多空间

通过指令:lsof | grep deleted 指令,查看当前系统句柄未释放情况

1
lsof | grep deleted

发现有很多已经不存在的容器空间文件句柄未释放。

问题找到后怎么解决,有两种方法。

1、将当前线程进行重启,关闭线程,从而让句柄释放,释放空间。

2、找到指定的文件句柄,将当前文件句柄的大小设置为空。

第一种方法频繁重启不适合当前业务场景在生产环境不适用,采用第二种方法。

通过lsof | grep deleted拿到PID(进程标识符)和FD(文件描述符,应用程序通过文件描述符识别该文件。)

置空文件内容

1
2
echo > /proc/PID/fd/FD
echo > /proc/3840/fd/124

然后查看磁盘使用发现空间恢复了

-------------    本文结束  感谢您的阅读    -------------