僵尸文件的查看处理
LINUX实战--本地使用空间与实际文件占用空间不匹配问题
LINUX操作系统
1
基本概念介绍
首先了解一个概念:
僵尸文件,僵尸文件的产生是因为有进程或者用户调用文件,但是同时有其他用户删除文件。但是因为被调用的关系,文件不会直接删除,只会打上deleted的标志。
虽然操作上已经删除文件,但是实际文件所占用的空间没有真正释放
以及一个工具:
lsof工具,是一个列出当前系统打开文件的工具,通常使用lsof 加文件或者路径的方式查看。
2
为何会出现僵尸文件?
文件系统与文件、磁盘管理与文件、进程管理与文件,最核心的都是文件的索引,而不是文件的数据。
一个数据构建了各式各样的索引,只有索引全部失效,此时数据才失去意义,才能最终释放。而仅仅删除文件并不能真正意义上的释放文件占用空间,因为还有其他用户调用,所以rm操作只会将其打上deleted标签,待无链接访问时就会直接释放。
3
实战演示
本次介绍因为僵尸文件导致的空间不足问题
通过ll -al | grep filename发现实际占用空间与本地目录所使用空间不足
猜测属于僵尸文件导致的占用空间隐藏
通过lsof | grep delete 确实当前目录下是否存在僵尸文件
三种处理办法:
方式一、重启主机,主机重启后,所有调用进程都会释放,而文件已经处于deleted状态,会被直接释放
方式二、kill进程,此操作与方式一相同,都是通过释放调用来释放空间,但是kill操作存在一定的风险,极有可能会导致影响被kill的服务
方式三、清空文件释放空间
通过lsof | grep filename 查到对应PID
通过ls -l |/proc/PID/fd/* | grep filename 查找对应文件句柄
通过置空echo >/proc/PID/fd/NUM 此处NUM为第二步中的回显
但是需要注意的是第三种方式只是将文件置空,并未清除文件,文件本身还是存在的
长
按
关
注
技术梦想家
ID : technology_dreamer
一起探索科技的宇宙.....