确定NFS共享上的文件是否正在使用中

确定NFS共享上的文件是否正在使用中,第1张

概述场景: 我们使用NFS共享来允许客户端上传原始视频材料.然后从(NFS)服务器上的目录中轮询文件以进行处理.由于我们不想处理尚未完成上传的文件,我想在服务器端脚本(Bash)中确定文件是否仍在使用中. 正如手册页所说,fuser和lsof -N都允许检测NFS共享中的使用中文件.但是,我没有“看到”服务器上使用的文件,这会导致处理过程中的文件损坏. 建立: 我的NFS / etc / export 场景:

我们使用NFS共享来允许客户端上传原始视频材料.然后从(NFS)服务器上的目录中轮询文件以进行处理.由于我们不想处理尚未完成上传的文件,我想在服务器端脚本(Bash)中确定文件是否仍在使用中.

正如手册页所说,fuser和lsof -N都允许检测NFS共享中的使用中文件.但是,我没有“看到”服务器上使用的文件,这会导致处理过程中的文件损坏.

建立:

我的NFS / etc / exports包含这些设置(UID和GID是服务器上共享目录的所有者,换行包装以便更好地显示):

/export/foo 10.3.2.0/255.255.255.0     (rw,sync,no_subtree_check,all_squash,anonuID=1001,anongID=1001)

客户端使用以下方式安装此共享:

10.3.2.197:/export/foo  /data002/  nfs  defaults        0 0

服务器是使用“nfs-kernel-server 1:1.2.0-4ubuntu4”的Ubuntu 10.04,客户端是SLES 10 SP2

当我在客户端(在共享目录内)打开文件时,使用

echo "Hello" > test.txt && tail -f foo.txt

然后检查(仍然在客户端上)文件是否正在使用中

fuser foo.txt

我可以看到该文件正在使用中.但是,当检查服务器端(fuser foo.txt和lsof -N | grep foo.txt)时,我没有获得任何使用信息.

如果NFS共享上的文件当前正在使用(无论是本地还是远程),我如何检查服务器?或者在我目前的设置中我做错了什么?

解决方法 lsof只会告诉你本地系统正在使用哪些资源,在任何情况下它都不会显示任何外国资源获取,但是有一种解决方法……

NFS服务器上的lockd守护程序将跟踪所有远程使用情况,如果您在被另一个节点写入时尝试访问它,它将对该文件发出锁定,因此如果您正在使用它(您的挂载选项有点点)那样)你可以在这种情况下使用lsof来显示文件是否被锁定.

总结

以上是内存溢出为你收集整理的确定NFS共享上的文件是否正在使用中全部内容,希望文章能够帮你解决确定NFS共享上的文件是否正在使用中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1039531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存