Linux下rm正在写入的文件会发生什么
Linux下rm正在写入的文件会发生什么
在 Linux 中,文件的存储由两部分组成:
- 文件名(
Directory Entry):用户看到的文件路径(如/data/file.txt)。 - 文件数据(
Inode和数据块):实际存储文件内容的磁盘空间。
rm 命令的作用是删除文件名与 inode 的链接(目录中看不到这个文件了)。
如果该文件被其他进程正在写入,则 inode 和数据块不会立即释放,进程还可以继续写入(数据仍可写入),等所有进程关闭文件后再回收资源(回收文件的磁盘空间)。
之所以这样,是因为其实在 linux 中,文件数据和文件名是分开的
- 文件名是目录中的一个“链接(
link)”,指向inode。 - 文件内容存在
inode管理的block中。 rm命令只是调用unlink(),移除了一个目录项。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CYK's Blog!
评论
