02:linux 磁盘满了,却找不到大文件问题处理 lsof命令

今天,上午收到zabbix 报警。

报警内容:一台服务器,磁盘满了。

故障排查步骤:

之前磁盘满了,一般都是由于服务器上面再跑的服务日志引起的占用太多空间,服务器上有java程序,去删除多余的日志就可以了。但是我记得这台服务器我是做过日志自动清理机制的。

因此登录服务器,df -h 发现磁盘91% , df -i  索引正常。 

 

我首先想到是不是日志清理出问题了,去每个服务下面log查看发现正常,日志量只有几百兆。

于是使用du找下大文件,于是在根目录下,看下各个目录的磁盘占用情况。

du -sh /

出来的结果是一共使用了6G多,没有一个目录有大文件的。

 这就很奇怪了,查看剩余空间和已用空间数据对不上,还相差40多个G。

于是,百度了下,原来有的文件可能删除了,但是并没有被释放,就像进入回收站一样,于是用lsof命令查看那些删除了但是还打开着文件句柄的文件,并按照大小顺序排列。

 

lsof | grep deleted | sort -nr

 

结果发现有一个java日志文件,有40多G,状态为删除,但是文件句柄仍然被打开了。还在不停的写入数据,

 

于是群里面找到开发,让帮忙重启服务,再df -h,空间瞬间空闲了40多个G。

 

posted @ 2019-09-01 11:18  运维魔法师  阅读(3387)  评论(0编辑  收藏  举报