Linux下rm删除文件后,磁盘容量没有释放(全网最详细)

打印 上一主题 下一主题

主题 619|帖子 619|积分 1857

目录

问题形貌
问题缘故原由
解决方案
方法一(会将关联程序杀掉,需要将被杀的程序在举行重启)
方法二(程序很重要,不能被停止方法)


问题形貌


服务器磁盘空间使用率即将100%,使用rm -rf 日志文件名删除文件后,再使用df -h查看,发现磁盘空间未释放还是百分百
问题缘故原由


在linux体系中,通过rm删除文件将会从文件体系的目录结构上排除链接,但此时如果文件是正在被使用,比如java服务没关你要删了他的关联日志,那么历程其实仍旧可以读取该文件,只是你在列表上看不见了,磁盘空间也不停被占用,除非把占用他的服务关闭,此时写入的流关闭,文件正式被删除

解决方案

方法一(会将关联程序杀掉,需要将被杀的程序在举行重启)

当linux打开一个文件的时候,Linux内核会为每一个历程在/proc/nnnn/fd/目录(nnnn为pid历程好号),建立一个以其pid 为名的目任命来生存历程的相关信息,而其子目录fd生存的是该历程打开的所有文件的fd
说到这你就明确了没错,我的第一个方法就是直接杀那个关联历程.
  1. # 推荐第一种,第二种的没用的数据太多
  2. [root@localhost ~]# find /proc/*/fd -ls | grep '(deleted)'
  3. [root@localhost ~]# lsof | grep deleted
复制代码

  1.  # kill掉相应的进程或者重启该进程,让os自动回收磁盘空间
  2. [root@localhost ~]# kill -9 进程号              
复制代码
方法二(程序很重要,不能被停止方法)

通过该历程,进入到对应的/proc/nnnn/fd/目录,仍旧可以找到对应的被删除文件

找到后缀是(delete的标签)

 

  1. [root@localhost ~]# echo " " > 文件名
  2. 或(推荐第二种)
  3. [root@localhost ~]# echo " " > "/proc/$pid/fd/$fd"
复制代码
推荐你使用下图方法,上面命令行第二种:

固然这个方法也可以用来规复被误删除的文件数据,直接cat删除的文件名(仅限于被删除文件还被历程占用没有被完全释放)

------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有资助的话,麻烦点赞加关注呗!小弟在这拜谢了!
如果您以为我的文章在某些地方写的不尽人意或者写的不对,从而让你对你人生观产生颠覆(概不负责),需要斧正,麻烦在评论区不吝赐教,作者看到后会根据您的提示查阅文章举行修改,还这世间一个公理一片蓝天
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小小小幸运

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表