加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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来禁用目录缓存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读