linux系统空间不足,lsof看到异常的delete状态的文件。
#20191101更新---这篇文章适用于产生僵尸文件的进程是可kill的状态参考,就是这个进程死亡不影响业务,那么另外一种情况,也是我现在管理的项目中生产环境中出现过的情况,产生僵尸文件的进程是webapp应用,不能被kill,kill后,将会影响生产环境业务,但是磁盘也已经满了,那么可以参考此种另一篇文章处理(不影响进程的情况下清理系统空间):
https://www.cnblogs.com/xiaodai12138/p/11102660.html
今天在工作中遇到一个小问题,刚处理好了,赶紧把解决思路存起来。
入职新公司1个月多了,对整体的项目不能说是完全熟悉,今天收到短信说服务器的硬盘空间不足了。
异常的时候忘记截图了,处理完毕后又找不到异常时候的资源占用状态,这是讲系统盘处理完毕后的状态,异常时系统盘占用率高达96%

我发现磁盘空间不足后,刚开始的思路是到/下通过du -sh 来查找大文件,删了几个备份文件和一些没用的日志记录之后,虽然可以将占用降到80%左右,但是还是挺高的(红框是nfs挂载)

除去nfs挂载的文件,其余文件怎么可能将20G占用的所剩无几呢
得知这个方案不可行后,考虑了其他查询方案,看是否有状态为delete的文件
(僵死文件。这些文件实际上已经被删除,但是有服务程序在使用这些文件,导致这些文件一直被占用,无法释放磁盘空间,使用如下命令可以查看死文件占用情况)
lsof |grep deleted //在opt目录下执行lsof |grep deleted
如附件,表红区域为这个僵死文件的大小(单位为字节Bytes)。

当时在这里我可以看到几个很大的文件是delete状态,一下就点通了我。
就在准备kill掉他的时候,又出现一个问题,delete状态的文件最终指向一个端口监听,并且有几十个已建立的连接,我不知道这个端口的作用,通过ps命令看到这个端口的进程id,跟一个项目是有关联的,但是这个项目已经停止使用了,且早就被我shutdown了。

这个端口监听我死活找不到是哪个项目监听的这个端口,由于是项目不是完全熟悉了,不知道这是什么个情况,起初还以为有其他的项目使用着这个项目的配置文件啥的,但是想了想有不太可能,跟之前运维确定了没有过这个端口的使用后,就将其kill了,kill后,系统盘占用立马恢复正常,恢复到了开头的那个状态,这个情况可能是tomcat的某些bug导致,虽然项目停止,但是连接还是建立着,这个项目停止了有几天了,这些已建立的连接还是已建立(难道client端不发送连接断开请求,不关机吗)。。
由于tomcat内部机制并不了解,这个话题就到此结束。
这样起来处理数据盘资源占用就轻松多了

占用数据盘资源的是一个运行中的jar包,这个jar包以nohup形式运行,之前运维没有关闭nohup.out的输出导致出现了这么大的僵死文件。
我的做法是将其kill后再次启动,将结果送到回收站,以后可以避免出现这些问题。
nohup java -jar SocketServer.jar >/dev/null 2>&1 &
>/dev/null 表示将标准输出信息重定向到"黑洞"
2>&1 表示将标准错误重定向到标准输出(由于标准输出已经定向到“黑洞”了,即:标准输出此时也是"黑洞",再将标准错误输出定向到标准输出,相当于错误输出也被定向至“黑洞”)
完后问题解决完毕,磁盘占用恢复正常。

linux系统空间不足,lsof看到异常的delete状态的文件。的更多相关文章
- linux系统空间不足,不重启进程,清理僵尸文件。
问题:通过lsof |grep delete命令可以看到状态为delete的进程文件占用了较多的空间,导致系统磁盘空间不足,而du 命令看到的磁盘空间占用没那么高. 得到僵尸文件名称:catalina ...
- linux 磁盘空间被占满但找不到目标文件的问题处理 lsof命令
lsof简介 在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能. 直接输入lsof部分输出为: 每行 ...
- Linux系统下用find命令查找最近修改过的文件
1.先进入指定目录,比如:cd /var/ftp/ss 2.输入指定命令,相关命令如下介绍: 最近24小时内修改过的文件 find ./ -mtime 0 前48~24小时修改过的文件 find ./ ...
- Linux系统下我的/etc/sysconfig/路径下无iptables文件
转载于:https://blog.csdn.net/zzm8421/article/details/78083582 虚拟机新装了一个CentOs7,然后做防火墙配置的时候找不到iptables文件, ...
- VMware中linux硬盘空间不足的解决方法
相信很多人都和我一样是利用虚拟机安装linux的,在玩转linux的时候,可能就会遇到系统提示磁盘空间不足的情况.由于VMware中当初装系统时的设置的最大磁盘容量是不可以动态修改的,所以为我们使用带 ...
- 【夯实Mysql基础】MySQL在Linux系统下配置文件及日志详解
本文地址 分享提纲: 1. 概述 2. 详解配置文件 3. 详解日志 1.概述 MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下:在Linux下叫my.cnf,该文件位于 ...
- Linux系统中如何查找大文件或文件夹的方法
在Windows系统中,我们可以使用TreeSize工具查找一些大文件或文件夹,非常的方便高效,在Linux系统中,如何去搜索一些比较大的文件呢?下面我整理了一下在Linux系统中如何查找大文件或文件 ...
- linux系统中的进程状态分析
转载地址:https://blog.csdn.net/shenwansangz/article/details/51981459 linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序, ...
- Linux系统的组成
<linux系统7大子系统> a:SCI(system call interface) ————用户程序通过软件中断后,调用系统内核提供的功能,这个在用户空间和内核提供的服务之间的接口称为 ...
随机推荐
- vue 编译警告 Compiled with 4 warnings
问题原因: windows下盘符的大小写导致的. 我在cmd里运行的时候,是切换到小写,改成大写的E盘符就没问题了
- Nginx作为静态资源web服务之文件读取
Nginx作为静态资源web服务之文件读取 文件读取会使用到以下几个配置 1. sendfile 使用nginx作为静态资源服务时,通过配置sendfile可以有效提高文件读取效率,设置为on表示启动 ...
- java_day07_异常
第七章: 异常 1.异常概述 在我们日常生活中,有时会出现各种各样的异常,例如:职工小王开车去上班,在正常情况下,小王会准时到达单位.但是天有不测风云,在小王去上班时,可能会遇到一些异常情况,比如小王 ...
- XDCTF2014 Writeup
Web50 猜谜语类题目?FLAG在图片中有一些字符的 ASCii值,拼起来就是FLAG. Web100 隐写术.使用工具 StegSolve,把任一颜色的bit0拼起来图片的最开始部分即为 fla ...
- JDBC概述及JDBC完成对Oracle的增删改查
什么是JDBC JDBC(Java Data Base Connectivity,Java数据库连接),是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问.它由一组用Java语言 ...
- pv与pvc
目的: 为了屏蔽底层存储实现的细节, 让用户方便使用同时让管理员方便管理, 引入了pv与pvc两种资源对象实现对存储的管理子系统 pv: 对底层网络共享存储的抽象, 将共享存储定义为一种资源 pvc: ...
- 并发编程: GIL锁、GIL与互斥锁区别、进程池与线程池的区别
一.GIL 二.关于GIL性能的讨论 三.计算密集测试 四.IO密集测试 五.GIL与互斥锁 六.TCP客户端 七.进程池 八.进程什么时候算是空闲 九.线程池 一.GIL GIL Global In ...
- 更新对象sql语句
可以这么理解,我们以0为临界值,控制 OR 前 或者 OR后面部分的执行,为啥不是大于0作为临界值,因为这是int型主键. 之前我觉得这不就是炫酷嘛,这么些实际场景在哪里?下面来介绍一下实际的应用 ...
- linux下进程间通信的机制
今天突然想起了nginx解决惊群的方法,就是在多个进程间利用锁来保证同一时刻只能有一个worker进程在自己的epoll中加入监听的句柄,那么进程间是怎么共享变量的呢,下面就介绍一下共享内存 共享内存 ...
- CSS基础学习-14 CSS visibility与overflow属性