场景描述:

       在项目运行一段时间后,服务器上的JavaWeb项目突然无法使用,使用终端操作Linux时,出现如下报错信息“cd -bash: 无法为立即文档创建临时文件: 设备上没有空间”,网上有人说重启服务器,这种方式太暴力了,我都不知道服务器其他同事都有什么程序或者是什么服务,我直接重启可能不太合适吧,更要命的是。好多人在那胡乱扯,一会这个命令一会那个命令的,讲的乱七八糟,你讲就讲了,讲到一半最后来一句删除无用的文件,我特么哪知道哪个目录下的哪些文件能删?想骗我删库跑路?而且,如果要删除日志文件,请看最后的【后期补充

解释:

      df -h与df -i的区别(参考地址:https://www.cnblogs.com/jxhd1/p/6700300.html

(​“df -h”显示目前磁盘空间和使用情况。 “df -i” 以inode模式来显示磁盘使用情况。)

      理解inode(参考地址:http://www.ruanyifeng.com/blog/2011/12/inode.html

解决inode爆满办法:(参考地址:https://blog.csdn.net/xiaobei4929/article/details/45822325

  [root@/]# lsof |grep delete

  根据lsof列出的进程号,kill这些进程后,空间就释放出来了

原因:

       有文件被删除,而进程还活着,因而造成还占用空间的现象

以上解决办法从linux命令查看到,df -i 的某项占用在逐渐变少。(但是后来该种方法无效果了,且继续看)

解决磁盘爆满办法

       从图上可以看到,50G被占满,当前目录下使用命令“du -h -x --max-depth=1”(查看当前目录层级以K、M、G为单位显示其大小)查看哪个目录占用过高

      (该命令参考讲解地址:http://www.cnblogs.com/iconfig/p/4863063.html

       可以看到usr和var占用较多,先到usr下查看

       usr下继续使用该命令,可以看到local下文件较多,按照该步骤继续查看

       最后定位到tomcat的日志文件较大,删除tomcat的日志,查看磁盘使用情况

        已经释放一部分空间,按照如上步骤删除没用的文件即可

清理后情况:

意外惊喜:

       当删除日志文件后,发现inode也被释放了

-----------------------------------------------------------------------------------------------

后期补充:

       删除日志文件后一段时间,发现CDH集群还是一直无法使用,用“lsof |grep delete”命令,直接先卡住,然后出来一大堆被删除的找不到资源的进程。所以用上面的方法是有问题的,我是直接重启了,一大堆找不到资源的问题就没了。

       网上看到别人使用下面的方法来清日志,不过我还没试,等再出现这个情况我在试验,我想的是如果日志文件很多,那操作起来就比较麻烦了,不可能一个个的用下面的指令来操作。

$ : > filename 
$ > filename 
$ echo "" > filename 
$ echo > filename

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐