Linux下删除日志失败,df -h 和 du -sh 显示的数据不一致现象

当rm命令删除正在被进程访问的日志文件时,磁盘空间可能不会立即释放。这是因为文件在系统中仍有链接存在。通过lsof命令可以检查并杀死相关进程以彻底释放空间。df-h显示磁盘全满,而du-sh则不包括已删除但未关闭的文件。了解这一现象对于系统维护至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景:
在机器上的服务日志没有分天,日志堆积,磁盘被写满,当我直接执行rm 命令删除日志时,执行完之后,发现:

采用df -h 显示的磁盘空间还是满的
采用du -sh 显示已经清理完毕,磁盘空间已经释放了

原因:
使用rm命令删除文件时,只有当文件不存在任何link时才会被删除(没有访问它), 当有进程访问这个文件时,就会存在链路,该线程没有被关闭,文件的实际占用空间就不会被释放
du 是根据文件名进行的空间统计,使用rm时该文件对系统来说已经不可见,所以不会统计这个文件, df则是磁盘实际占用的数量

解决:
使用lsof|grep delete命令查看正在进行删除此文件的进程,可以进程发现没有不会结束,这时可以手动kill 进程,可以发现磁盘会慢慢释放掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值