2

cron スケジュールが 1 分ごとであるのに、cron 時間の長さが 10 分である場合、どうなりますか?

cron:
- description: test for cron length of 10 min
  url: /test
  schedule: every 1 minutes

最初のテストは 00:00:00 に呼び出され、00:10:00 に終了します

2 番目のテストは 00:01:00 に呼び出され、00:11:00 に終了します

....

それがどうなるの?それとも、最初のテスト ジョブが完了した後にのみ 2 番目のテストが呼び出されますか?

4

1 に答える 1

3

はい、それが起こります。cronは、そのプロセスの実行時間に関係なく、毎分プロセスを実行します。同時実行を避けたい場合は、プロセスでセマフォ システムを使用します ( http://en.wikipedia.org/wiki/Semaphore_%28programming%29 )。単純な実装では、セマフォ ファイルをチェックするプロセス、そのファイルの最終変更時刻をチェックするプロセス、またはそのファイルに含まれる PID がまだ実行されているかどうかをチェックするプロセスで構成され、プロセスを実行するか、単に終了するかを決定します。より良い実装 (OS に依存しないことを気にしない場合) は、flock(1)を使用してファイルのロックを取得し、スクリプトが実行されるたびにそのロックをチェックします。

    #!/bin/bash
    # Exit on unchecked errors (can't acquire exclusive lock)
    set -e

    (
    # Wait for lock on /var/lock/.script.xlock (file descriptor 200)
    flock -x 200

    # Your code

    ) 200>/var/lock/.script.xlock #Associate file descriptor 200 with file
于 2013-03-20T12:51:02.357 に答える