filesystems – NFS – 以编程方式检测远程创建的文件?
发布时间:2020-12-13 16:43:21 所属栏目:Linux 来源:网络整理
导读:我正在尝试监视NFS共享并通过远程系统上运行的进程检测文件的创建.问题是文件创建后检测不起作用,我的脚本仍然认为没有文件.如果有人在目录中执行ls,或者我在后台运行一个单独执行ls的单独进程,那么脚本将会检测到该文件是否存在.但是,将“ls the directory
我正在尝试监视NFS共享并通过远程系统上运行的进程检测文件的创建.问题是文件创建后检测不起作用,我的脚本仍然认为没有文件.如果有人在目录中执行ls,或者我在后台运行一个单独执行ls的单独进程,那么脚本将会检测到该文件是否存在.但是,将“ls the directory”功能添加到主脚本中是行不通的:它仍然永远不会检测到文件是否存在,直到外部进程导致目录列表内容以某种方式刷新.
这是一个说明问题的测试用例: watch_file.pl: #!/usr/bin/perl -w my @stat; while (1) { @stat = stat("/nfs/test"); last if ($stat[1] && $stat[1] > 0); } 在“host-A”上运行该简单脚本: host-A% ./watch_file.pl & [1] 9312 切换到“host-B”并创建文件: host-B% touch /nfs/test …回到“主机-A”,程序还没有退出: host-A% …仍然在“host-A”上,在目录中执行ls,然后脚本会看到该文件: host-A% ls -a /nfs . .. test host-A% [1]+ Done ./watch_file.pl & host-A% 有没有人知道一个简单的修复或解决方法,这比在后台运行脚本每10秒使用一个NFS目录要少? 解决方法
默认情况下,大多数NFS客户端缓存目录信息60秒.
使用noac选项在客户端上挂载NFS共享以禁用属性缓存,或使用acdirmin = 0,acdirmax = 0来禁用目录缓存. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容