Linux通过rm命令删除jar包日志文件后磁盘空间没有释放的原因和解决办法

现象

服务器磁盘空间满了,删除jar包运行生成的日志文件后,通过df -h命令查看磁盘空间,发现根本没有释放磁盘空间。

原因

一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中。在将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以在出现删除日志文件后,空间还没释放,就是因为使用日志文件的进程还在一直向这个文件写入内容,导致虽然删除了ac日志文件,但是由于进程锁定,文件对应的指针部分并未从meta-data中清除,而由于指针并未删除,系统内核就认为文件并未删除,因此通过df命令查询空间并未释放。

解决办法

需要关闭进程才能释放空间

如果先通过rm -f命令删除了日志文件,则需要kill掉进程才能是否空间,否则虽然文件被删除了但空间未被释放,此时可以通过lsof|grep deleted命令查看删除的文件

lsof | grep deleted

不需要关闭使用日志的进程即可释放空间的办法

注意: 有可能需要多执行几次如下任一命令,才能生效

1)  > filename
2)  :> filename
3)  echo "" > filename  (文件大小被截为1字节)
4)  echo > filename
5)  cat /dev/null > filename 
6)  cp /dev/null filename
其中:/dev/null表示什么也没有

执行完成之后通过如下命令查看磁盘空间是否释放:

df -h
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值