2015-12-30 7 views
5

毎分cronjobを実行して、特定のディレクトリ(約300.000個のinode)で最後に変更されたすべてのファイルを検出し、このファイルリストをcsvにエクスポートします。最後に変更されたファイルを検出するためにCronjob

最適化されたコマンドを実行することは可能ですか?このディレクトリのソートフラグを使って "find"を実行することはできません。それは膨大で、おそらくすべてのファイルを実行するのに1分以上かかります。

私はそれを行うことができるコマンドはありますか?または、変更されたすべてのファイルが変更されたときにログを記録するサーバーのバックグラウンドで、特定のプログラムを実行しますか?これを行うためにPHPを使用するコマンドがある場合は問題ありません。PHPスクリプトを実行するためのcronを作成できますが、問題ありません。

+0

findがうまくいかない場合は、おそらくIOがボトルネックになるので、ファイルのmtimeを調べるために 'find'やその他の方法を使用すると無関係です。あなたのIOを向上させる方法に集中してください。 – Ctx

+0

ファイルへの書き込みは何ですか?それはそこでできますか? – Martin

+1

'incrontab'を使用してください。それはファイルイベント(変更など)を除いて通常の 'crontab'のように動作します:http://manpages.ubuntu.com/manpages/intrepid/man5/incrontab.5.html –

答えて

2

通常のcronと同様に使用できるincronというLinuxユーティリティがありますが、時間ベースのイベントではなく、inotifyで動作し、ファイルイベントから起動します。

現在のUbuntuのmanページを見つけることができます:http://manpages.ubuntu.com/manpages/intrepid/man5/incrontab.5.html

私は個人的には複雑すぎる何のためにそれを使用することがありませんでしたが、それは大体このように書き

それをインストールします。

sudo apt-get install incron 

オープンエントリを追加するには、エディタ:

incrontab -e 

次のように入力してください:

/var/www/myfolder IN_MODIFY curl https://www.example.com/api/file-updated/$# 

最初の部分は、見るファイルまたはフォルダです。 2番目の部分はイベントです。そして3番目の部分はコマンドです。

I と考えてください。$#は、問題のファイルのプレースホルダです。

+0

あなたは素晴らしいです! :) – Samul

+0

こんにちは、私は助けることができてうれしい:-) –

+0

これは本当に興味深いです。ありがとうございました。 –

関連する問題