*/5 * * * *フィールド
| 分 | */5 | 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 |
|---|---|---|
| 時 | * | 任意 |
| 日 | * | 任意 |
| 月 | * | 任意 |
| 曜日 | * | 任意 |
使える場所
| crontab | */5 * * * * /path/to/script.sh |
|---|---|
| GitHub Actions | - cron: "*/5 * * * *" (on.schedule) |
| Kubernetes CronJob | schedule: "*/5 * * * *" |
crontab はサーバーのタイムゾーンで動作します。GitHub Actions は常に UTC を使います。
知っておきたいこと
分フィールドの */5 は 0、5、10 分と続いて 55 分まで実行され、crontab を保存した時刻ではなく時計に合わせて動きます。*/5 を使うすべてのサーバーのすべてのジョブが同じ秒に起動するため、共有のデータベースや API に負荷が集中することがあります。負荷の高いジョブは 2-59/5 のようにずらしましょう。これは 2、7、12 分と続いて実行されます。10 分ごとは */10 です。
1 回の実行が 5 分を超える可能性があるなら、flock -n で保護して重複実行を防ぎましょう。Kubernetes では concurrencyPolicy: Forbid が同じ役割を果たします。cron の PATH と環境は最小限なので、プログラムは絶対パスで呼び出し、変数はスクリプト内で読み込みます。出力はログに追記しましょう。GitHub Actions は */5 を最小値として受け付けますが、負荷が高いとスケジュール実行が数分遅れて始まることがよくあります。