スケジュールが実行される前に cron スケジュールを理解する
Cron 式は、サーバー、CI ジョブ、自動化プラットフォーム、保守スクリプトで使われるコンパクトなスケジューリング文字列です。強力ですが、小さなタイプミスで毎日実行のジョブが毎分実行になったり、平日から週末に変わったりすることがあります。
このパーサーは Unix の 5 フィールド cron 式を平易な言葉で説明し、各フィールドを分解して、ツールで選択したタイムゾーンを使った今後の実行時刻を表示します。
サポートされている cron 方言
v1 パーサーは 5 つのフィールドを持つ標準的な Unix cron をサポートします:
minute hour day-of-month month day-of-week - 分の値は
0to59. - 時の値は
0to23. - 月の日 (day-of-month) の値は
1to31. - 月の値は
1to12、および JAN や DEC のような名前を含みますJANandDEC. - 曜日 (day-of-week) の値は
0to7、および JAN や DEC のような名前を含みますMONandFRI。どちらも0and7は日曜日を意味します。
ワイルドカード、カンマ区切りリスト、範囲、および */15 や 9-17/2 のようなステップ値をサポートします。 */15 or 9-17/2.
意図的にサポートしていないもの
Cron 方言は普遍的ではありません。Quartz、systemd タイマー、クラウドスケジューラ、Kubernetes、GitHub Actions、ホスティングプラットフォームは独自のフィールドや特殊な演算子を追加することがあります。
- 秒フィールドや年フィールドは Unix cron として解析されません。
- Quartz の演算子(例えば
?,L,W、および#)はサポート対象外として報告されます。 - マクロ(例えば
@dailyand@reboot展開されません。 - スケジュールの後のコマンドテキストは式の一部として扱われません。
このページは Unix スタイルのスケジュールのインスペクタとして使用してください。本番の自動化を変更する前に、実際にジョブを実行するスケジューラを確認してください。
タイムゾーンとサマータイムの挙動
cron 式自体にはタイムゾーンが含まれません。同じ式でも、サーバーが UTC、ローカルのシステムタイムゾーン、またはスケジューラ固有のタイムゾーン設定を使っているかどうかで異なる瞬間に実行されます。
- プレビューは、選択された IANA タイムゾーンと UTC の実行時刻を表示します。
- サマータイムの「進み(spring-forward)」により、存在しないローカルの壁時計時刻がスキップされることがあります。
- 時計の戻り(フォールバック)によりローカルの同じ壁時計時刻が繰り返されることがあります。スケジューラの挙動は異なる場合があります。
- day-of-month と day-of-week の両方が制限されている場合、Unix cron では一般的に OR の意味論が使われます。
重要なジョブの場合、プレビューは計画支援と考え、スケジューラ自体での挙動を確認してください。
よくある質問
これは Quartz cron をサポートしますか?
いいえ。このパーサーは Unix の 5 フィールド cron のみをサポートします。Quartz 形式の秒フィールド、年フィールド、および ?、L、W、# といった演算子はサポート外として表示されます。 ?, L, W、および # はサポート対象外として表示されます。
cron 式はどのタイムゾーンを使用しますか?
cron 式にはタイムゾーン情報が含まれません。プレビューはツールで選択したタイムゾーンを使用しますが、サーバーやスケジューラが異なるタイムゾーンを使っている場合があります。
なぜ day-of-month と day-of-week の両方が一致することがあるのですか?
一般的な Unix cron の挙動では、両方のフィールドが制限されている場合、どちらか一方のフィールドが一致すれば日付が一致することがあります。例えば、 0 0 1 * MON 月の最初の日と月曜日に実行される可能性があります。
crontab のコマンド部分を貼り付けてもよいですか?
スケジュールの 5 フィールドのみを貼り付けてください。このツールはスケジュールパーサーであり、crontab 全体のパーサーではないため、スケジュールの後のコマンドテキストは解釈されません。