linux磁盘占用100%,却找不到大文件——记一次僵尸文件导致的服务异常

问题:

  因服务器磁盘占用100%而导致服务异常。

解决:

  先用命令检查磁盘df -h

[root@localhost /]# df -h
文件系统                容量  已用  可用 已用% 挂载点
/dev/mapper/klas-root   100G   100G   0G   100% /

  发现根目录 /占用确实100%  

       然后利用命令du -sh * 和 find /etc -type f -size +800M  -print0 | xargs -0 du -h 排查。都没有找到能有效解决磁盘占用大文件。

  那这个文件有没有可能被删除了呢?

  命令 lsof -n | grep deleted列出当前系统打开文件(被删除)

[root@localhost fd]# lsof -n | grep deleted
Xvnc 1356213 1356215 llvmpipe- root 1w REG 252.0 94609219584 252169258 /root/.vnc/localhost.localdomain:1.log(deleted)

  这个文件有90多G那么大!!!
  判断频繁用vnc导致日志文件过大问题,命令查看 ls -lh /root/.vnc/localhost.localdomain:1.log,却提示文件不存在

[root@localhost fd]# tail /root/.vnc/localhost.localdomain:1.log
tail: 无法打开'/root/.vnc/localhost.localdomain:1.log' 读取数据: 没有那个文件或目录

  虚拟文件系统对应进程目录 看看文件tail /proc/1356213/fd/1(这个文件的指向就是/root/.vnc/localhost.localdomain:1.log

[root@localhost fd]# tail /proc/1356213/fd/1

SQL> SQL> 无法获取一行数据,忽略此输入无法获取一行数据,忽略此输入

SQL> SQL> 无法获取一行数据,忽略此输入无法获取一行数据,忽略此输入

SQL> SQL> 无法获取一行数据,忽略此输入无法获取一行数据,忽略此输入

SQL> SQL> 无法获取一行数据,忽略此输入无法获取一行数据,忽略此输入

SQL> SQ[root@localhost fd]# ls

  竟然有输出,果然看似文件是被删了,事实上还一直占用着系统资源

  这个时候只需要清空文件> /proc/1356213/fd/1就行。

  最后检查磁盘空间 ,成功释放

[root@localhost /]# df -h
文件系统                容量  已用  可用 已用% 挂载点
/dev/mapper/klas-root   100G   12G   89G   12% /

操作参考文章linux系统空间不足,不重启进程,清理僵尸文件

posted @ 2022-11-28 14:09  木之本末  阅读(2421)  评论(0编辑  收藏  举报