统信服务器操作系统【删除文件占用空间】问题处理

全文导读:本文介绍删除文件占用空间的原因以及确认方法,同时介绍释放空间的解决方案

问题现象

        在操作系统中,当我们使用 rm 在操作系统上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么操作系统内核还是不会 释放这个文件的磁盘空间,最后造成磁盘空间占用 100%,整个系统无法正常运 行。这种情况下,通过 df 和 du 命令查找的磁盘空间,可能 df 显示磁盘 100%, 而 du 查找目录的磁盘容量占用却很小。

问题原因

遇到这种情况,基本可以断定是某些大文件被某些程序占用了,并且这些大文件已经被删除了,但是对应的文件句柄没有被某些程序关闭,造成内核无法收回这些文件占用的空间。

解决方案

如何查找那些文件被某些程序占用
lsof -n |grep deleted
查询文件被某些程序占用
命令:
lsof -n| grep deleted             
打印出所有针对已删除文件的读写操作,这类操作是无效的,也正是磁盘空间莫名消失的根本原因。
使用:
kill -9 PID       
只需把进程删掉就能释放空间
操作命令详解
lsof   which httpd                   //那个进程在使用 apache 的可执行文件
lsof  /etc/passwd                   //那个进程在占用/etc/passwd
lsof  /dev/hda6                      //那个进程在占用 hda6 lsof /dev/cdrom //那个进程在占用光驱
lsof  -c sendmail                    //查看 sendmail 进程文件使用情况
#  lsof  -c courier -u uos            //显示出那些文件被以 courier 打头的进程打开,但 是并不属于用户 uos
 lsof  -p 30297                       //显示那些文件被 pid 为 30297 的进程打开
lsof  -D /tmp                        //显示所有在/tmp 文件夹中打开的 instance 和文件的进程,但 是 symbol 文件并不在列
lsof  -u1000                         //在 uid 是 1000 的用户的进程的文件使用情况
lsof  -uuos                          //查看用户 uos 的进程的文件使用情况
lsof  -i                                //显示所有打开的端口
lsof  -i:80                           //显示所有打开 80 端口的进程

 ©统信软件技术有限公司。访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本网站任何内容或服务进行转载,须备注:该文档出自【faq.uniontech.com】统信软件知识分享平台。否则统信软件将追究相关版权责任。

2023-02-08
3 3