0 0 * * 0フィールド
| 分 | 0 | 0 |
|---|---|---|
| 時 | 0 | 0 |
| 日 | * | 任意 |
| 月 | * | 任意 |
| 曜日 | 0 | 0 |
使える場所
| crontab | 0 0 * * 0 /path/to/script.sh |
|---|---|
| GitHub Actions | - cron: "0 0 * * 0" (on.schedule) |
| Kubernetes CronJob | schedule: "0 0 * * 0" |
crontab はサーバーのタイムゾーンで動作します。GitHub Actions は常に UTC を使います。
知っておきたいこと
0 0 * * 0 は日曜日が始まる午前 0 時、つまり土曜日が終わった直後に実行されます。週の終わりである日曜日の夜のつもりなら 0 23 * * 0 を、月曜日の 00:00 なら 0 0 * * 1 を使います。Vixie cron と cronie では 0 も 7 も日曜日を表し、@weekly は 0 0 * * 0 と同じです。Quartz ベースのスケジューラーは曜日を 1〜7 で数え、日曜日が 1 なので、コピーする前に確認してください。
週次ジョブは静かに失敗します。日曜日の午前 0 時にサーバーが停止していると、cron は後から実行しないので、さらに 1 週間待つことになります。一方、anacron や Persistent=true を指定した systemd タイマーなら、起動後に実行し損ねたジョブを実行します。週次のメンテナンスは長引くことが多いので、flock -n を使い、出力をログに残し、ハートビート監視を追加しましょう。隔週の日曜日に実行するには、コマンド内で date +\%V の週番号を確認します。