ファイルがフォルダに配置されるとすぐに、ファイルを削除するスクリプトを作成しようとしています。これを行う1つの方法は、cronスケジューラのスクリプトでrsyncを実行することです。
このアプローチの問題はシステムオーバーヘッドです。毎秒実行することはできません。一定の間隔を置いて実行すると、その間隔中にファイルが脆弱になります(送信者がアクセスできる可能性があります)。要件は、ファイルが到着するとすぐに消えることです。
stackoverflowをチェックして見つけました。インクロン注文する。ただし、これはLinuxでのみ機能し、Solarisでは機能しません。
答え1
何らかの理由で、Gaminのポーリング特性がお客様の要件に合わずにSolaris 10を引き続き使用したい場合は、ナビゲートできる少なくともいくつかの選択肢があります。
- BSM監査を有効にし、FCイベント(ファイル生成)を追跡します。
- 監視するディレクトリにファイルが作成されたら、Dtrace を使用して応答します。
後者の場合は、dtraceスクリプト自体のディレクトリからターゲットファイルを移動することもできます。
答え2
あなたが明示的にSolaris 10に言及したことを知っていますが、Solaris 11を使用している場合は、次のものを使用できます。ウォッチディレクトリSolaris ファイルイベント通知に基づくコマンドです。したがって、基本的に、ある種のポーリングに基づく他のソリューションと比較して、システムオーバーヘッドはほぼ0%に近いです。これは、フォルダ内のファイルイベントが発生するまで永遠に待機するか、タイムアウトのある引数を使用するブロックコマンドです。最も一般的には、新しいファイルが到着するのを待つために使用されます。
本当にSolaris 10を使うことにこだわったら、私はどのような方法も知りません。いいえ何らかの方法で世論調査に基づいています。
また、v7以降、Javaではファイルシステム監視のための組み込みメカニズム。このソリューションの利点は、関連プラットフォームに最も効果的な方法を自動的に活用することです。つまり、アプリケーションがSolaris 10で実行され(おそらくいくつかのデフォルトのポーリングメカニズムを使用するJavaを介して)Solaris 11に移行すると、同じアプリケーションがネイティブのSolarisファイルイベント通知メカニズムをシームレスに利用できるようになります。