大概是前俩天吧,发现公司的网站不定时的出现接口调不通的情况,便让手下小弟去服务器上查看一下,小弟告我磁盘空间满了,于是我让他处理一下。结果没想到他直接把 catlina.out 给干掉了。后果可想而知,磁盘空间还是一直是100%,无法使用,他还一脸蒙蔽。大概情况就是这样,下面说一下我解决的过程。
因为catlina.out 是tomcat 的输出日志,只要运行就会有日志输出,所有不能直接删除,要去清空。即当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。如果误删,按以下方法就可解决,亲测有效。
1. 首先重启tomcat ,会在log 目录下重新生成 catlina.out 文件
2. 使用 lsof -n | grep deleted 查看被删除的记录,查出结果按以下排列
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
第二列为进程 pid
3. 杀掉这个被删除掉的 catlina.out 的进程,使用
kill -9 pid (你的进程号)
4. 查看磁盘空间是否恢复,一般到这一步就会解决
df -hl
5. 如果没有恢复,就看具体哪个占了内存,cd 到目录下,使用
du -sh *
然后删掉即可!
再说点题外话,catlina.out 的清空方法:
true > catlina.out