0 0 1 * *フィールド
| 分 | 0 | 0 |
|---|---|---|
| 時 | 0 | 0 |
| 日 | 1 | 1 |
| 月 | * | 任意 |
| 曜日 | * | 任意 |
使える場所
| crontab | 0 0 1 * * /path/to/script.sh |
|---|---|
| GitHub Actions | - cron: "0 0 1 * *" (on.schedule) |
| Kubernetes CronJob | schedule: "0 0 1 * *" |
crontab はサーバーのタイムゾーンで動作します。GitHub Actions は常に UTC を使います。
知っておきたいこと
0 0 1 * * は毎月 1 日の午前 0 時に実行され、@monthly と同じです。課金処理、請求書、月次レポートはたいていここで動くので、どのタイムゾーンの「1 日」なのかを決めておきましょう。UTC のサーバーで 1 日になっても、南北アメリカではまだ前月の末日です。前月分のレポートは、30 日や 31 日を決め打ちせず、実行日から日付の範囲を計算してください。
Vixie cron と cronie には月末を表す構文がありません。0 0 28-31 * * で実行し、コマンド内で判定してください。たとえば test $(date -d tomorrow +\%d) = 01 && /path/to/script.sh のようにします。Quartz や一部のクラウドスケジューラーは代わりに L をサポートしています。OR ルールに注意してください。0 0 1 * 1 は、1 日が月曜日のときではなく、毎月 1 日と毎週月曜日に実行されます。