Linux磁盘空间被占用问题

久未见 提交于 2020-03-19 13:41:38

3 月,跳不动了?>>>

最近遇到一个非常诡异的Linux磁盘空间被占用的问题,莫名其妙的磁盘满了,使用在根目录du -h命令查看却只占用到12%左右 可直接使用df -h命令查看却显示磁盘已经100%use了,如下图:

实在匪夷所思,后来找到问题是因为之前执行rm -rf删除操作的进程没有正常结束掉,导致虽然文件看着是被删除了(看不到了),但是那个进程还占用着,系统磁盘空间实际上没有被 释放,只是将文件标记为deleted状态,类似windows下的回收站状态。使用du查看时,因为没有该删除状态文件的节点信息,所以就不做统计,从而导致与df的结果不一致。

要解决这个问题只需要将deleted状态文件删除,则根据pid直接kill调相应进程即可。 使用losf命令列出deleted状态的进程号

lsof |grep delete

然后使用kill -9命令删除进程号即可,即上图的第二列,这样状态的文件可能会很多,如何快速删除呢?不要慌有办法的,使用以下命令即可

lsof |grep delete|grep -v grep|cut -c 9-15| xargs kill -9

清理完之后再使用df -h命令看看: 瞬间释放了84G出来,哈哈哈,开心~ 现在和du -h看到的一致了

说明

列出了当前主机中运行的进程中delete状态的进程

lsof | grep delete | grep -v grep

截取第9至15字符(进程id),列出了要kill掉这些进程的id,并将之打印在了屏幕上

lsof | grep delete | grep -v grep | cut -c 9-15

后面加上'xargs kill -9'后,则执行这些命令,进而杀掉了这些进程

lsof | grep delete | grep -v grep | cut -c 9-15 | xargs kill -9

据说lsof是个很强大的命令,可以用来代替netstat和ps命令,有兴趣的同学可以百度一下具体用法

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!