web-dev-qa-db-ja.com

ディレクトリにトリガーを置く方法

ディレクトリをスキャンし、その中のファイルをメンテナンスするスクリプトがあります。別のプロセスがディレクトリにファイルを作成します(1日あたり10〜30ファイル)。

スクリプトは、毎日のcronジョブを介して呼び出されます。必要なのは、イベントでスクリプトをトリガーすることです(新しいファイルがディレクトリに作成されるたびに)。 cronジョブの頻度を増やすよりも、この方が好きです。

どうやってやるの?インストールするコマンドまたはプログラムはありますか?

助けてくれてありがとう。

25
albert green

交渉する

inoticomingは、Linuxのinotifyフレームワークでディレクトリを監視し、特定の名前のファイルが配置されるとアクションをトリガーするデーモンです。

たとえば、ディレクトリにアップロードされた.changesファイルを待機し、repreproを呼び出してリポジトリに配置するために使用できます。

インクロン

incronは「inotify cron」システムです。通常のcronのように機能しますが、時間イベントではなくファイルシステムイベントによって駆動されます。このパッケージには、「incrond」(crondに類似)と呼ばれるデーモンと、テーブルマニピュレータ「incrontab」(「crontab」など)という2つのプログラムが用意されています。

incronは、Linuxカーネルのinotify syscallsを使用します。

cronと同様に、各ユーザーは独自のincronテーブルを編集できます。

23
Florian Diesch

iWatchと呼ばれる小さなプログラムもあります。 manページ を参照してください(このページはUbuntuの正確な(12.04)で、他のUbuntuバージョンへのリンクがあります)。

iWatchには、フォルダーを再帰的に(つまり、サブフォルダーも)監視し、ファイル/ディレクトリイベントに応答してメールを送信する機能があります。

4
drevicko

知っておく価値のあるもう1つのユーティリティはfileschangedmanページはこちら )で、選択したファイルまたはディレクトリのファイルシステムイベントを監視できます。たとえば、次のコマンド

fileschanged -s created -t1 $PWD

ファイル作成イベントの現在のディレクトリを監視し、作成されたファイルの名前を1秒のタイムアウトでstdoutに書き込む必要があります。

fileschangediWatchとは異なり、incronはフォルダーを再帰的に監視できます(inoticomingは別の回答に記載されているように)。

3
enzotib

inotifyのマニュアルページがあります あり

pythonスクリプトを使用する場合は、 pyinotify を使用できます

2
Pascal