Webサーバー(HTTP)を継続的に監視し、minを使用して新しく追加されたファイルをダウンロードする最善の方法は何ですか?遅延(1分未満の遅延が望ましい)?
答え1
監視装置
まず、モニタリングのために以下を使用することをお勧めします。ナギオス、コアソースコードは無料ですが、GUIが必要な場合は支払う必要がありますが、それほど多くのお金を使う価値があります。
また、使用することができますイシンガ、PRTG、またはあなたにもっと合うもの。
yum
Collectd(コレクションデーモン)は、RHEL派生製品またはapt-get
Debianベースの派生製品をダウンロードして使用できる無料の監視ツールでもあります。あなたは読むことができますこの紙Collectdを使用したい場合。
ジョブはx <1分ごとに実行されます。
質問の2番目の部分では、xが定期的に1分未満のときはいつでもジョブを実行してください。以下に説明するいくつかのトリックが利用可能なので、Cronjobが利用できないことをご存知でしょう。ザイルズ この質問にはあなたが欲しいものをしてください。
必要に応じてスクリプトを使用して永久に実行するか、必要に応じて起動時に実行することをお勧めします。次の簡単な構文を使用できます。
while true; do yourJob; sleep someTime; done
あるいは、必要に応じて、より複雑なスクリプトを使用することもできます。
watch
コマンドを使用することもできます。たとえば、
watch -n1 command
command
それは毎瞬間そして永遠にあなたを走ります。
watch
お分かりのように、複雑なスクリプトの代わりに単純なスクリプトをx回(1分未満)ごとに実行する必要がある場合は、シェルスクリプトを実行することもできます。
これはあなたの選択です。
答え2
これはいくつかの要因によって異なります。
Webサーバーを制御できる最も簡単な方法は、最後の確認またはダウンロード以降に変更されたファイル数を提供する(RESTful?)サービスをインストールすることです。これにより、クライアントとサーバーのデータ転送とロードが最小限に抑えられます。これは、特にファイルシステムに依存せずにアップロードスクリプトを介してサーバー上のファイルのアップロード/変更を直接追跡できる場合に当てはまります。
後者ならfamd
。
サーバーを制御しない場合は、ダウンロードする前にサーバーを変更する必要があります。最も簡単なのは、いくつかを使用することです。ネットワークミラーw3mirなどのユーティリティはすでにETagおよびLast-Modified / If-Modified-Sinceヘッダーの確認/提供を担当しています。これは、より少ない呼び出しを行う必要があるため、ユーティリティをより頻繁に実行できることを意味します。
についてはどのようにこのユーティリティの実行方法は、実行場所によって異なります。 Unix システムで cron ジョブを使用したり、ループで実行したりできます。
ただし、前者を選択する場合は、以前のインスタンスが終了する前にミラープロセスが開始されないように、セマフォの種類をインストールすることをお勧めします。ロックファイルを作成するのと同じくらい簡単です。
if [ -r /tmp/mirror.lock ]; then
echo "lock file found" | logger -t webmirror
exit 0
fi
touch /tmp/mirror.lock
...whatever...
rm /tmp/mirror.lock
ただし、スクリプトを終了できる信号も受信する必要がありますcatch
。そうしないと、一時的なエラーが発生した場合はロックファイルが残り、エラーが解決された後も他のすべてのインスタンスが実行されない可能性があります。
あるいは、ロックファイルが合理的な数よりも古いものではないことを確認し、そうであれば削除することもできます。あるいは、見つかったスクリプトインスタンスの数ps
(通常は現在のインスタンス、より多くの場合は現在のインスタンスが中断するのが最善)を確認して実行できます。ロックファイルをまったく使用しないでください。
答え3
cronジョブで簡単なコマンドを実行できますが、curl
Web監視機能を備えた監視ソリューションを使用することをお勧めします。そのうちの多くは無料です。 Googleの「オープンソースネットワークモニタリングソリューション」だけで、たくさんのことができます!