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 に答える