问题原因
在Linux或UNIX系统中,通过rm命令或者文件管理器对某个文件执行删除操作后,该文件将会从文件系统的目录结构上解除链接(unlink)同时从磁盘上清除数据。如果删除文件时,文件正在被一个或多个进程占用(如文件正在被浏览或读取),将出现解除链接(unlink)成功,而清除数据失败的情况,即空间未释放。
解决方案
查询占用文件的进程,并使用kill命令结束该进程。进程结束后,文件空间将自动释放。
操作步骤
-
执行以下命令,查询已删除但仍然被进程占用的文件列表。
$ /usr/sbin/lsof | grep deleted
执行命令后会获得如下回显信息(此信息为示例,请您以实际回显信息为准)。
cfg 27757 data 35u ocd 65,67 4295334545 45555532/oradata/DATA/fcuser.bak(deleted)
从回显信息中可见pid为27757的进程占用了刚刚删除的文件/oradata/DATA/fcuser.bak,文件名后的“(deleted)”为文件已被删除的标记。
-
执行以下命令,通过结束该进程来释放被占用的空间。
kill -9 27757