0

我已经在我的本地机器上挂载了一个 NFS 挂载(所以,我想我的机器是 NFS 客户端),并且正在由托管 NFS 挂载的远程机器(NFS 服务器)在 NFS 挂载中写入一个文件。现在,我如何能够使用 JAVA 检测到远程机器中写入的文件在我从本地机器读取之前已关闭?

或者,有没有其他方法可以实现我想要的?

编辑:我还想提一下,我无法控制远程 NFS 服务器。我只能以只读模式安装。

4

1 回答 1

1

正如您所说,您无法控制 NFS 服务器,也无法控制更新 NFS 服务器上文件的程序,因此您无能为力。您真正可以利用的唯一一件事是,当文件更新时,它的修改时间也会更新。这应该可以使用 File.lastModified() 提供给您的 java 客户端。如果您的应用程序记住了上次修改日期,那么您至少可以知道自上次阅读以来是否有要处理的数据。这绝对不是完美的。有竞争条件等,但取决于您的应用程序需要/做什么,这可能就足够了。您无法判断文件在服务器上是关闭还是打开。

如果文件修改出现缓慢,您也可以使用noac挂载选项挂载。虽然这会损害常规 NFS 客户端上的 NFS 性能,但如果您的计算机没有在该驱动器上使用大量其他 NFS 文件,它可能对您有用。参见“ man nfs ”。

作为旁注,我看不到文件锁定会有所帮助,因为您没有表明 NFS 服务器上的应用程序无论如何都使用锁。

于 2013-03-09T05:06:25.230 回答