* * * * *フィールド
| 分 | * | 任意 |
|---|---|---|
| 時 | * | 任意 |
| 日 | * | 任意 |
| 月 | * | 任意 |
| 曜日 | * | 任意 |
使える場所
| crontab | * * * * * /path/to/script.sh |
|---|---|
| GitHub Actions | - cron: "* * * * *" (on.schedule) |
| Kubernetes CronJob | schedule: "* * * * *" |
crontab はサーバーのタイムゾーンで動作します。GitHub Actions は常に UTC を使います。
知っておきたいこと
標準の cron で指定できる最も細かい単位は 1 分です。それより短い間隔が必要なら、スクリプト内のループ、sleep 30 で始まる 2 つ目のエントリー、または systemd タイマーを使います。主な落とし穴は重複実行です。1 回の実行が 1 分を超えると、プロセスが積み重なっていきます。flock -n /tmp/job.lock /path/to/script.sh のようにジョブを flock で包み、前の実行がまだ続いている間は新しい実行がすぐに終了するようにしましょう。
cron は最小限の環境で実行されます。PATH はたいてい /usr/bin:/bin だけで、シェルのプロファイルは読み込まれず、作業フォルダーはホームなので、絶対パスを使ってください。出力はユーザーにメールで送られるか破棄されるため、>> /var/log/job.log 2>&1 でリダイレクトし、そのログをローテーションしましょう。GitHub Actions はこれほど頻繁には実行できず、最短の間隔は 5 分です。もう少し穏やかな候補として、2 分ごとの */2 があります。