Linux文件删除后磁盘没有释放

问题描述:
使用SpringBoot开发,使用log4j2保存日志,日志级别是INFO,保存全量日志。
系统运行一段时间后,日志文件大小达到20G,公司运营发出报警邮件,要求检查问题。
检查后发下文件太大,所以通过rm -rf xxxxxxxxxx指令删除文件。
删除文件后,报警并未解除。
在检查,使用df -h指令查看,磁盘使用还是在报警界线以上,即刚刚的文件并没有真正的删除。
通过各种搜索找资料,找到原因如下:
在linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的日志文件,在删除的时候正在有程序往里面写日志。
解决办法:
既然找到原因,对应的解决方法也就出来了。
解决办法1:
比较优雅的做法是删除文件之前先确保没有进程使用它,再删除。
如果已经删除文件才发现有进程使用它,重启这个进程(比较暴力哦)。
解决办法2:
先备份需要删除的文件(如果需要的话),然后使用指令
echo “” > file
公司运营给出的方法,没有测试是否好用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值