OneKitTools logoOneKitTools
developer2分で読めます

"Cron式の完全ガイド:基礎から高度なスケジュール設定まで"

Cron式とは何か?構文、フィールド、特殊文字を学ぼう——「毎日深夜に」や「毎週月曜日の9時に」といった一般的なスケジュールの実例付き。

OneKitTools Team2026年4月14日

Cron式とは何か?

CronはUnix/Linuxシステムに組み込まれた時間ベースのジョブスケジューラだ。Cron式は、cronにいつタスクを実行するかを伝える構文だ。

こんなものを見たことがあるはず:0 0 * * *。これは「毎日深夜に」を意味する。でも基礎を超えた途端に、cronの構文は複雑になる——5つのフィールド、オプションの秒フィールド、プラットフォームの違い、そしてほとんどの人が意味を理解せずにコピペする特殊文字。

このガイドでそのすべてを明確にする。

5つ(または6つ)のフィールド

標準的なcronは空白で区切られた5つのフィールドを使う:

┌──────────── 分 (0–59) │ ┌────────── 時 (0–23) │ │ ┌──────── 日 (1–31) │ │ │ ┌────── 月 (1–12) │ │ │ │ ┌──── 曜日 (0–7、0と7が日曜日) │ │ │ │ │ * * * * *

一部のシステム(AWS EventBridge、Spring、Quartz)では先頭にフィールドが追加され、6フィールドになる。使用しているプラットフォームを確認しよう。

特殊文字

文字意味
*すべての値* * * * * = 毎分
,複数の値0 9,17 * * * = 9時と17時
-範囲0 9-17 * * * = 9時から17時まで毎時
/ステップ*/15 * * * * = 15分ごと
L最後0 0 L * * = 月末(Quartzのみ)
?値なし0 0 ? * MON = 月曜日、月の任意の日(Quartz)

よく使うCron式

毎分

* * * * *

5分ごと

*/5 * * * *

毎時0分

0 * * * *

毎日深夜

0 0 * * *

毎日午前9時

0 9 * * *

毎週月曜日午前9時

0 9 * * 1

平日(月〜金)午前8時

0 8 * * 1-5

週末の正午

0 12 * * 0,6

毎月1日の深夜

0 0 1 * *

四半期ごと(1、4、7、10月)の深夜

0 0 1 1,4,7,10 *

平日の9時〜17時に30分ごと

*/30 9-17 * * 1-5

よくある落とし穴

「2時間ごと」は 0 */2 * * * であり、*/2 * * * * ではない

*/2 * * * * は2ごとという意味になる。ステップはそれが置かれているフィールドに適用される。

日曜日は0でも7でもある

標準cronでは、07はどちらも日曜日を表す。曖昧さを避けるために、一貫して0を使おう。

月の日 AND 曜日 はANDではなくOR

0 0 1 * 1 は毎月1日および毎週月曜日に実行される——1日が月曜日の日だけではない。「毎月第一月曜日」を実現するにはcron外のスクリプトロジックが必要だ。

タイムゾーン

Cronは特に設定しない限りサーバーのローカルタイムゾーンで動作する。UTCサーバーで0 9 * * *のジョブはUTC午前9時に実行される——これはあなたのタイムゾーンでは午前2時や午後11時かもしれない。

常に確認しよう:

timedatectl   # Linuxでの現在のタイムゾーンを表示

命名されたショートカット(非標準だが広くサポートされている)

ショートカット等価意味
@yearly0 0 1 1 *年に一度
@monthly0 0 1 * *月に一度
@weekly0 0 * * 0週に一度(日曜日)
@daily0 0 * * *一日一度(深夜)
@hourly0 * * * *一時間に一度
@rebootシステム起動時

Cron式を生成・検証する

Cron Generatorでは式をビジュアルで構築できる——日本語でスケジュールを選択し、Cron式を取得。0 9 * * 1-5が正しいかどうか迷う必要がなくなる。

逆方向も対応:任意のCron式を貼り付けると、それがいつ実行されるかの説明が得られる。

クイックリファレンス

# ┌──── 分 0-59 # │ ┌─── 時 0-23 # │ │ ┌── 日 1-31 # │ │ │ ┌─ 月 1-12 # │ │ │ │ ┌ 曜日 0-7 (0=日) # │ │ │ │ │ * * * * * 毎分 0 * * * * 毎時 0 0 * * * 毎日深夜 0 9 * * 1 毎週月曜9時 */15 * * * * 15分ごと 0 0 1 * * 毎月1日
シェア