cd -bash: 无法为立即文档创建临时文件: 设备上没有空间;磁盘爆满;inode爆满;
场景描述:
在项目运行一段时间后,服务器上的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
更多推荐
所有评论(0)