我的一个文件夹中有一个 .fuse_hidden* 文件,它不会消失。'lsof | grep fuse_hidden' 没有给出任何结果,所以我不确定操作系统认为哪个程序仍在打开它。有没有办法强制删除而不重新启动?这是在 Ubuntu 12.10 中,文件夹位于 NTFS 分区上。
谢谢。
答案1
隐藏文件由 fuse 高级用户空间库创建。Unix 支持对已删除文件的引用和访问,但大多数 fuse 应用程序并不处理这些。因此,fuse 用户空间库的行为与 NFS 相同,只要引用仍然存在,删除就是“软”的。文件不会真正被删除,而是被重命名为“.fuse_hidden...”,直到最后一个引用被释放。
这是 FUSE 用户空间库的一部分,并且是正确的行为。如果您的程序允许传递额外的 fuse 标志(或修改程序以执行此操作),则可以使用 FUSE 的 hard_remove 挂载选项。缺点是文件系统将不再有权访问在删除时打开的文件,因此它可能表现不佳。
一些文件系统会自行跟踪引用,并可能默认禁用软删除。此外,使用 FUSE 低级 API 的程序不会这样做。
答案2
sudo fuser -c <filename>
这应该会为您提供仍在访问您的文件的进程的进程 ID。