Mic*_*ant 16 nfs rm files vagrant
我删除了一个文件,现在我看到:
$ ls
total 64
-rw-rw-r-- 1 502 17229 Sep 17 16:42 page_object_methods.rb
drwxrwxr-x 7 502 238 Sep 18 18:41 ../
-rw-rw-r-- 1 502 18437 Sep 18 18:41 new_page_object_methods.rb
-rw-r--r-- 1 502 16384 Sep 18 18:42 .nfs0000000000b869e300000001
drwxrwxr-x 5 502 170 Sep 21 13:48 ./
13:48:11 *vagrant* ubuntu-14 selenium_rspec_conversion
Run Code Online (Sandbox Code Playgroud)
如果我尝试删除它:
$ rm .nfs0000000000b869e300000001
rm: cannot remove ‘.nfs0000000000b869e300000001’: Device or resource busy
Run Code Online (Sandbox Code Playgroud)
这说明什么?我该怎么办
Gil*_*il' 15
文件可以在进程打开时删除。发生这种情况时,目录条目被删除,但文件本身(inode 和内容)保留在后面;该文件只有在没有更多链接并且没有被任何进程打开时才会被真正删除。
NFS 是一种无状态协议:操作可以独立于先前的操作执行。服务器甚至可以重新启动,一旦它重新联机,客户端将像以前一样继续访问文件。为了使其工作,文件必须通过它们的名称来指定,而不是通过打开文件获得的处理(服务器在重新启动时会忘记)。
将两者放在一起:当客户端打开文件并删除文件时会发生什么?该文件需要保持名称,以便打开它的客户端仍然可以访问它。但是当一个文件被删除时,预计之后不会再存在该名称的文件。因此 NFS 服务器将删除打开的文件变成了重命名:文件被重命名为.nfs…
(.nfs
后跟一串字母和数字)。
您不能删除这些文件(如果您尝试,所发生的只是一个.nfs…
具有不同后缀的新文件)。当打开文件的客户端关闭它时,它们最终会消失。(如果客户端在关闭文件之前就消失了,可能需要一段时间,直到服务器注意到。)