目录
问题形貌
问题缘故原由
解决方案
方法一(会将关联程序杀掉,需要将被杀的程序在举行重启)
方法二(程序很重要,不能被停止方法)
问题形貌
服务器磁盘空间使用率即将100%,使用rm -rf 日志文件名删除文件后,再使用df -h查看,发现磁盘空间未释放还是百分百
问题缘故原由
在linux体系中,通过rm删除文件将会从文件体系的目录结构上排除链接,但此时如果文件是正在被使用,比如java服务没关你要删了他的关联日志,那么历程其实仍旧可以读取该文件,只是你在列表上看不见了,磁盘空间也不停被占用,除非把占用他的服务关闭,此时写入的流关闭,文件正式被删除
解决方案
方法一(会将关联程序杀掉,需要将被杀的程序在举行重启)
当linux打开一个文件的时候,Linux内核会为每一个历程在/proc/nnnn/fd/目录(nnnn为pid历程好号),建立一个以其pid 为名的目任命来生存历程的相关信息,而其子目录fd生存的是该历程打开的所有文件的fd
说到这你就明确了没错,我的第一个方法就是直接杀那个关联历程.
- # 推荐第一种,第二种的没用的数据太多
- [root@localhost ~]# find /proc/*/fd -ls | grep '(deleted)'
- 或
- [root@localhost ~]# lsof | grep deleted
复制代码
- # kill掉相应的进程或者重启该进程,让os自动回收磁盘空间
- [root@localhost ~]# kill -9 进程号
复制代码 方法二(程序很重要,不能被停止方法)
通过该历程,进入到对应的/proc/nnnn/fd/目录,仍旧可以找到对应的被删除文件
找到后缀是(delete的标签)
- [root@localhost ~]# echo " " > 文件名
- 或(推荐第二种)
- [root@localhost ~]# echo " " > "/proc/$pid/fd/$fd"
复制代码 推荐你使用下图方法,上面命令行第二种:
固然这个方法也可以用来规复被误删除的文件数据,直接cat删除的文件名(仅限于被删除文件还被历程占用没有被完全释放)
------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有资助的话,麻烦点赞加关注呗!小弟在这拜谢了!
如果您以为我的文章在某些地方写的不尽人意或者写的不对,从而让你对你人生观产生颠覆(概不负责),需要斧正,麻烦在评论区不吝赐教,作者看到后会根据您的提示查阅文章举行修改,还这世间一个公理一片蓝天
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |