2011-11-09 17 views
1

毎分cronタスクを実行しているとします。そして、そのタスクが1分以上実行されるたびに、何が起こるでしょう。次のcronが最初のcronを待つか、それとも何も確認せずに実行されますか?オーバータイムcronを処理する方法

私は毎分cronタスクを実行したいと思いますし、長時間実行しているタスク/状況の場合には、そのようなcronタスクをオーバーラッピングすることはありません。

助けてください。

答えて

0

実行する内容によって異なります。独自のスクリプトであれば、重複を避けるためにロック/ロックチェックの仕組みを実装することができます。

しかし、それはcronの仕事ではありません。

0

はい、cronは何かがクラッシュするまで毎分1分分のプロセスを開始します。あなたはあなたができるならば、基本的には、起動時にこれを行うには、あなたの仕事にある種のロックを置きたいと思うでしょう

if not get_lock() 
    print "Another process is running" 
    exit 

これ、もちろん、あなたがコードの実行中を所有していることを前提としています。もしあなたがコード化していないコマンドを実行しているなら、上記の擬似コードロジックを実装するシェルラッパーを構築することをお勧めします。ここで、get_lock()はこのような別のプロセスが実行中かどうかを調べます。

0

他にも述べたように、CRONはスクリプトの別のインスタンスがまだ実行中であるかどうかにかかわらず、毎分スクリプトを実行します。

あなたは、あなたがCRONの代替を使用してみてください可能性があり、これを回避したいと、独自のロック機構を実装する空想ない場合は、継続的にスクリプトを再実行しますデーモンですトップハム・ハット卿と呼ばれます。必要に応じて実行間隔を指定することもできます。また、オプションで最大実行時間を指定することもできます。スクリプトがAWOLになると強制終了される可能性があります。

いくつかのユースケースとウェブサイト上でより多くの情報があります:

http://fat-controller.sourceforge.net/

関連する問題