2

私は Tripwire に代わる小規模な社内の代替手段を開発しているため、JBoss EAP サーバーでファイルをハッシュし、パスとハッシュを MySQL データベースに保存するための小さなスクリプトをコーディングしました。

スクリプトは毎日、ファイルシステムのハッシュと DB に保存されているハッシュを比較するため、変更があればログに記録され、最終的に JasperServer を使用して報告されます。

スクリプトはcronを使用して夜間に実行され、多数のスクリプトがDBにクエリを実行するのを避けるために、楽しいことをする前にtime.sleep(RANDOM_NUMBER_OF_SECONDS)を使用しますが、time.sleepが永遠にスリープしているように見え、スクリプトが終了せずに終了することがありますエラーが発生した場合は、cron が送信するメールを確認しましたが、エラーはログに記録されません。どんな助けでも大歓迎です。VMWare内で実行されているIBMのJDKおよびRHEL 5.6であるjython-standalone-2.5.3を使用しています。

http://bugs.jython.org/issue1974を見つけたところ、コードのコメントは OS シグナルがこの動作を引き起こす可能性があることを示しているようですが、これが私の場合かどうかはわかりません。

http://code.google.com/p/pysnapshot/でコード チェックアウトを確認したい場合

ルイス・ガルシア・ブストス。

4

1 に答える 1

0

time.sleep()DB にクエリを実行するスクリプトの数を減らすことができる理由がわかりません。

cronそのプログラムを定期的に呼び出すには、IMO ot を使用することをお勧めします。/tmp/起動後、ディレクトリに「セマフォ」ファイルがあるかどうかを確認する必要があります/tmp/snapshot_working.txt。セマフォ ファイルがない場合は、作成して次のように書き込みます。「スナップショット開始: 2012-12-05 22:00:00」。プログラムがチェックを完了したら、このファイルを削除する必要があります。開始時にプログラムがセマフォ ファイルを見つけた場合、このファイルに保存されている日付と時刻が「古い」ように見えるかどうかを停止または確認できます。「古い」ファイルである場合は、それを削除し、「古い」ファイルが見つかったというログへの通常の書き込みを開始します (管理者は、このような長時間動作するスナップショットを見つけて終了することができます)。

あなたのケースで作成する唯一の理由はtime.sleep()、DB へのサービス拒否攻撃を行うことなく、通常の勤務時間にそのようなスクリプトを使用したい場合です。例: 100 個の DB クエリを作成した後、ほとんどスリープ状態にならず、DB に他のユーザー クエリを処理する時間を与えることができます。しかし、私はプログラムが早く終了するほど良いと思います。

于 2012-12-05T13:19:19.507 に答える