一次服务器磁盘空间不足导致的一些列问题

  继昨天服务器上应用 CPU占用过高 后面该应用宕掉了以后       java 一次CPU占用过高问题的排查及解决

 

今天又出现了更严重的问题     昨天解决完问题  今天早些时候 出现了系统无法登录  查询日志定位应该数数据库的问题

后面发现是磁盘满了    其实还是昨天的出现问题的导致,  死循环刷了特别多的日志,,导致磁盘空间不足  导致数据库读写出问题了,继而导致应用不可用

使用cd /  du -sh *  列出各文件夹的占用大小

 

可以看到主要是usr/   进入 usr  继续看磁盘占用

/usr/local文件夹依旧还是最大的

继续进入/usr/local

基本可以确定是日志文件太多了

清理掉一些日志  mysql就正常了,  应用也正常了,   故而整理了一下服务器的磁盘, 避免下次再次发生磁盘不足的情况

索性这两次出现的问题都是一些内部的应用,  出现了问题影响范围有限

 

 

———————————————————————————–华丽的分割线——————————————————————————————-

在整理linux磁盘的时候  查了一些资料 故而整理一下 ,留给以后需要的时候的使用

df  -h  查看磁盘占用情况

du -sh *  进入某个人文件夹后  使用该命令可以看该文件夹下文件的占用情况

 

但是发现使用rm -rf  文件名   删除文件后    磁盘空间并没有变化    

查询资料发现是    通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。

简单的理解  就是rm  删除的是引用  如果引用对应的文件正在被使用,这个文件是不会真正的被删除掉的

lsof | grep deleted

 

 

 

———————————————————————————–华丽的分割线——————————————————————————————-

 

顺便学习一下 lsof  (list opened files)

lsof全名list opened files,也就是列举系统中已经被打开的文件。我们都知道,linux环境中,任何事物都是文件,
设备是文件,目录是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。

 lsof -i : 端口号     可以用来查询端口时候被占用

lsof -i :8082

lsof  文件  显示开启文件/usr/local/tomcat_backend/logs/catalina.out的进程

lsof  /usr/local/tomcat_backend/logs/catalina.out

 lsof – p 进程PID 

lsof – p 1498

 看进程号为1498的进程打开了哪些文件