Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux rm-rf执行后,硬盘空间变化

Linux rm-rf执行后,硬盘空间变化问题

作者:Full Stack Developme

这篇文章主要介绍了Linux rm-rf执行后,硬盘空间变化问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Linux rm-rf 执行后,硬盘空间会直接减少释放吗?

不会立即释放给操作系统,但空间会立即从文件系统中“消失”为可用状态。

为了让你更准确地理解这个过程,需要区分两种情况(假设你使用的是标准的 Linux 文件系统,如 ext4、XFS 等):

1. 大多数情况:空间立即对文件系统“释放”

当你执行 rm -rf 删除文件时:

2. 特殊但常见的情况:空间未立即释放

有些情况下,删除了文件但 df 看到的可用空间并未增加:

有进程仍在占用该文件:如果某个进程(如 tail、less、或正在写入的日志程序)在 rm -rf 执行时仍然打开着该文件(file descriptor 未关闭),那么:

结果:硬盘空间没有释放。直到那个进程结束或主动关闭文件,空间才会真正被标记为空闲。

典型场景rm -rf 删除了一个正在被写入的大型日志文件,或者删除 nohup.out 但后台进程仍在运行。

如何检查:使用 lsof | grep deleted 命令,你会看到标记为 (deleted) 但仍被占用的文件。

挂载点或快照文件系统:某些特殊文件系统(如 btrfs、zfs 的快照)或使用了 硬链接 的文件。rm 只是减少了一个引用计数,只有当引用计数归零时空间才会释放。

3. 物理层面:数据内容并未被擦除

这是很多人混淆的一点:

总结

问题答案
rm -rf 后立即 df -h 能看到空间增加吗?通常能(除非文件仍被进程占用)。
硬盘上的数据被彻底擦除了吗?没有,只是标记为可覆盖。
空间释放给操作系统了吗?是的,文件系统标记为空闲,OS 可以重新使用。

一个实用的建议

如果你执行 rm -rf 删除了大文件,但 df 显示空间没变,99% 的情况是某个进程还在占用该文件

执行以下命令找到并重启相应进程即可:

lsof | grep deleted

这将列出所有已被删除但未真正释放空间的“幽灵文件”。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文