多数のファイルを処理し、それらの情報をデータベースに保存するソラリス システムでは (データベースを使用することが、所有しているファイルの数に関する情報を取得する最も簡単な方法であることはわかっています)。ファイルがデータベースに保存される途中でシステムを通過するときに、ファイルを監視するための迅速な方法が必要です。
現在、ディレクトリを配列に読み取り、配列のサイズを取得して監視スクリプトに送信する perl スクリプトを使用しています。残念ながら、システムが成長するにつれて、このモニターはますます遅くなります。
関連するすべてのディレクトリでカウント操作を実行した後、15〜20秒ごとに一時停止して更新するのではなく、はるかに迅速に動作する方法を探しています。
私のボトルネックは、アレイ操作への読み取りディレクトリであることは比較的確信しています。
ファイルに関する情報は必要ありません。サイズやファイル名も必要ありません。ディレクトリ内のファイルの数だけです。
私のコードでは、構成情報を保持するために使用する隠しファイルやテキスト ファイルはカウントしません。この機能が保持されていれば素晴らしいことですが、必須ではありません。
Cコードまたはそれらの行に沿った何かでinodeをカウントすることへの言及をいくつか見つけましたが、私はその分野であまり経験がありません.
私はこのモニターを可能な限りリアルタイムにしたいと考えています。
私が使用するperlコードは次のようになります。
opendir (DIR, $currentDir) or die "Cannot open directory: $!";
@files = grep ! m/^\./ && ! /config_file/, readdir DIR; # skip hidden files and config files
closedir(DIR);
$count = @files;