本文共 698 字,大约阅读时间需要 2 分钟。
巡检发现一个服务器占用到了96%,使用“find / -type f -size +1024M”查询了一下只有一个19G的文件比较大,而且500G的硬盘,3个多小时没有执行完这个命令。于是搜索半天,发现了一个可能很多人都会知道,但会忽视的问题就是(以下为原文摘抄):
“就是在Linux的文件系统中删除一个文件,系统并不会真的立刻把这个文件丢弃掉,而只是把它从文件的目录系统中移除, 只有确保所有使用这个文件的程序全部都退出后,才会真的把文件彻底删除掉。”
于是做如下操作,发现了真正占用空间的文件:
1、首先执行,发现如下图所示的占用文件:
lsof | grep '(deleted)'
2、把占用文件的进程杀掉;
kill -9 31753
3、由于这个是jboss的服务,所以杀掉进程后重启了jboss服务,然后在看占用就正常了,万恶的logo挡住了,之前是96%,重启进程后降到了46%。
总结:
其实总结过程不难看出,这应该是之前删除/tmp下jar文件的同事忽略了这个文件是被进程占用的情况,删除了文件没有重启进程所导致的。在linux系统中删除积累性文件时可以使用lsof命令查看一下文件是否有被进程占用,在进行删除和相关删除后的操作,避免这种问题的产生。
延伸:
根据搜索到的参考文章,du -h -x --max-depth=1命令可以查看到那个目录占用的空间较大。命令中-x参数会让命令不统计不在同一个磁盘分区上目录,或换句话说,忽略其他的磁盘挂载点。
参考文章:http://blog.csdn.net/scythe666/article/details/52020934
转载地址:https://blog.csdn.net/weixin_33921444/article/details/112998678 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!