问题:在Linux服务器中使用删除文件后,发现服务器实际磁盘空间大小并未释放,所在的磁盘依旧是满的。
原因:在Linux系统中,通过rm或者文件管理器删除文件,如果只是将它会从文件系统的目录结构上解除链接,也就是只会删除了文件和系统目录结构的链接。如果文件在删除时是被打开的(有一个进程正在使用该文件,文件被进程锁定或者有进程一直在向这个文件写数据等)状态,那么进程将仍然可以读取该文件,也就是说没有删除掉文件在读取的状态,所以磁盘空间也就会一直被占用。
解决方法:
- 输入lsof | grep delete获取到已经被删除但是仍然被应用程序占用的文件列表。
- 输入ll /proc/${pid}/fd/ |grep delete根据pid查找到相应删除的文件列表
- 输入echo > /proc/${pid}/fd/${fd}就会清空该进程占用的文件