当我尝试将一些文件集中到韦卡文件系统它失败了,因为其他一些客户端已经持有锁定,我无法找出哪个进程/主机锁定了它。如何强制客户端解锁weka上的文件?
答案1
一般来说,没有办法从网络文件系统(非 NFS)的客户端解锁文件,我假设其他文件系统也是如此。某些文件系统允许释放锁从服务器端。
在客户端上,实现此目的的唯一方法是使用mv
该文件并创建一个具有相同名称和内容但不同 inode 的新文件:
mv $FILE $FILE.locked; cp -p $FILE.locked $FILE
这将重命名锁定的文件并添加后缀.locked
,然后将其复制回原始文件名。现在,您将拥有一个与原始文件具有相同内容和属性的文件,但由于它将具有新的索引节点,因此不会被锁定(.locked
但是,具有原始索引节点的文件仍将保持锁定状态)。
不过,您应该理解其中的含义:如果有进程仍然保存原始文件的文件描述符(无论是在同一客户端还是其他客户端上),它们现在将保存带有后缀的旧文件的文件描述符,.locked
而不是到同名的新文件,因此您在新文件中执行的任何更改都不会反映在这些进程中。只处理具有该名称的文件后/mv
将cp
使用新文件。