【发布时间】:2014-12-16 16:44:06
【问题描述】:
我有点难以理解这是如何工作的。
unlink() 似乎会删除引用文件数据的 inode,但实际上不会删除数据。如果是这样的话,
a) 数据会发生什么变化?大概它不会永远存在,或者人们会一直用完磁盘空间。最终是否有其他方法可以在没有关联 inode 的情况下删除数据,还是什么?
b) 如果数据没有发生任何变化:我如何才能真正删除它?如果某些事情自动发生在它身上:我怎样才能在命令中实现它?
(辅助问题:如果 shell 命令 rm 和 unlink 本质上做同样的事情,就像我在这里读到的其他问题一样,而 Perl unlink 只是另一个调用,那么有什么意义像File::Remove 这样的模块,它似乎又做了同样的事情?我意识到“有不止一种方法可以做到这一点”,但这似乎是“不止一种方法来说 it”,其中“it”总是指同一个操作。)
简而言之:我能否确保删除文件实际上会立即释放其磁盘空间?
【问题讨论】:
-
File::Remove执行递归,rmdir并为您进行 globing,而unlink没有。data deleting到底是什么意思? AFAIK 磁盘空间在取消链接后被释放,所有 PID 都为其关闭文件句柄。 -
@mpapec:
unlink只是删除了一个链接。在不再有任何指向数据的链接之前,不会回收空间