sql >> データベース >  >> RDS >> Mysql

cronジョブで処理する新しいファイルを処理する方法

    ランダムに作成されたファイルを処理/処理する良い方法は、incronを使用することです。 cronではなく 。 (注:incronはLinuxカーネルのinotify を使用しているため syscalls、このソリューションはLinuxでのみ機能します。)

    一方、cron 日付と時刻に基づいてジョブを実行します。incron 監視対象ディレクトリの変更に基づいてジョブを実行します。たとえば、新しいファイルが作成または変更されるたびにajobを実行するようにincronを構成できます。

    Ubuntuでは、パッケージはincronと呼ばれます 。 RedHatについてはよくわかりませんが、これが正しいパッケージだと思います:http://rpmfind.net//linux/RPM/dag/redhat/el5/i386/incron-0.5.9-1.el5.rf。 i386.html

    incronパッケージをインストールしたら、

    をお読みください。
    man 5 incrontab 
    

    incrontab構成ファイルのセットアップ方法については。 incron_config ファイルは次のようになります:

    /var/ss01/ IN_CLOSE_WRITE /path/to/processing/script.py $#
    /var/ss02/ IN_CLOSE_WRITE /path/to/processing/script.py $#
    /var/ss03/ IN_CLOSE_WRITE /path/to/processing/script.py $#
    /var/ss04/ IN_CLOSE_WRITE /path/to/processing/script.py $#
    

    次に、この構成をincrondデーモンに登録するには、

    を実行します。
    incrontab /path/to/incron_config
    

    これですべてです。これで、ファイルが/ var / ss01、/ var / ss02、/ var / ss03、または/ var / ss04に作成されるたびに、コマンド

    /path/to/processing/script.py $#
    

    $#が新しく作成されたファイルの名前に置き換えられて実行されます。

    これにより、ハッシュを保存/比較する必要がなくなり、ファイルは作成された直後に1回だけ処理されます。

    処理スクリプトが監視対象ディレクトリの最上位に書き込まれないことを確認してください。書き込まれる場合、incrondは作成された新しいファイルに気づき、script.pyを再度起動して、無限ループに陥ります。

    incrondは個々のディレクトリを監視し、サブディレクトリを再帰的に監視しません。たとえば、tsharkに/ var / ss01 / tobeprocessedに書き込むように指示し、incronを使用して/ var / ss01 / tobeprocessedを監視し、script.pyに/ var/ss01に書き込むように指示できます。

    PS。 pyinotify と呼ばれるinotify用のPythonインターフェースもあります。 。 incronとは異なり、pyinotifyはサブディレクトリを再帰的に監視できます。ただし、あなたの場合、再帰的監視機能は有用または必要ではないと思います。



    1. MySQLのスケーリングソリューション(レプリケーション、クラスタリング)

    2. 選択したグループを2番目のグループで使用し、それ自体をMySQLのデータソースとして使用してテーブルを更新するにはどうすればよいですか?

    3. 2つの日付の間の月曜日を検索

    4. シリアル化されたデータによるmysqlの順序?