利用lsof命令查找已经删除的文件来释放磁盘空间

测试环境一台服务器/目录空间使用率达到97%,但是通过du -sh *发现实际空间没用到那么多,初步怀疑,之前删除的文件,有运行中的进程一直占用,导致空间没有释放,如图通过du -sh *发现共实际使用不到5G+空间,而通过df -h发现已经使用了45G。

利用lsof命令查找已经删除的文件来释放磁盘空间

利用lsof命令查找已经删除的文件来释放磁盘空间

接着我们通过lsof命令查找运行中的进程占用已经删除的文件(僵死文件。这些文件实际上已经被删除,但是有服务程序在使用这些文件,导致这些文件一直被占用,无法释放磁盘空间,使用如下命令可以查看死文件占用情况),使用命令

lsof | grep delete |sort -nrk 7|more

注意:sort -nrk 7是将已经删除的文件进行大小排序

利用lsof命令查找已经删除的文件来释放磁盘空间

15638进程占用大量的的删除文件,释放这些文件,首先查找进程ps -ef|grep 15638,我这个是测试环境,所以我使用kill -9 15638直接杀死进程,再用df  -h

利用lsof命令查找已经删除的文件来释放磁盘空间

空间使用率已经下降到11%

总结:在日常运维过程中,如果我们需要删除比较大的文件可以使用> filename,这种可以直接释放磁盘空间,使用rm 如果有进程在访问文件,则有可能出现磁盘空间不释放的情况。

上一篇:最新13个加速 Web 开发的框架和工具


下一篇:L3-1 二叉搜索树的结构 (30 分)