次において実施00:00

0 0 * * *

フィールド

分00
時00
日*任意
月*任意
曜日*任意

使える場所

crontab0 0 * * * /path/to/script.sh
GitHub Actions- cron: "0 0 * * *" (on.schedule)
Kubernetes CronJobschedule: "0 0 * * *"

crontab はサーバーのタイムゾーンで動作します。GitHub Actions は常に UTC を使います。

知っておきたいこと

0 0 * * * はサーバーのタイムゾーンの 00:00 に実行されます。クラウドのマシンでは、手元の午前 0 時ではなく UTC であることが多いので、timedatectl で確認しましょう。@daily と @midnight は同じスケジュールの省略形です。午前 0 時は誰もが選ぶデフォルトなので、バックアップやレポート、他のテナントのジョブがその時刻にディスクやデータベースを奪い合います。17 0 * * * のような空いている時間帯のほうが、たいていは周りに優しい選択です。

cron は裸の % を改行として扱うので、crontab の中ではエスケープしてください。date -d yesterday +\%F は、夜間ジョブが通常処理すべき日付を返します。午前 0 時にサーバーが停止していても、標準の cron は後から実行しません。anacron や Persistent=true を指定した systemd タイマーなら実行します。Healthchecks.io や Cronitor のようなデッドマンスイッチを追加して、ジョブが黙って止まったときに気づけるようにしましょう。

cron 式の作成・解説ツールを開く