cron式ジェネレーター
cron式ジェネレーター:作成、解説、次回の実行時刻 | We.Inc
プルダウンでcronのスケジュールを作成するか、式を貼り付けて分かりやすい日本語で読み解けます。お使いのタイムゾーンで次の10回の実行時刻を確認し、crontab、GitHub Actions、Vercel、Kubernetes用にコピーできます。
cron式ジェネレーター
cron式は、スペースで区切った5つのフィールドで構成されます。分、時、日、月、曜日の順です。*/5 * * * *は5分ごとに実行し、0 9 * * 1-5は平日の9:00に実行します。プルダウンで作成するか、自分の式を貼り付けて、その解説と次の10回の実行時刻を確認しましょう。
5つのフィールド(順番どおり)
- 曜日
- 0-7、またはSUN-SAT(0と7はどちらも日曜日)
フィールドごとに値を選ぶか、式を貼り付けましょう。このツールは式を分かりやすい日本語で解説し、間違いを指摘し、任意のタイムゾーンで次の10回の実行時刻を一覧表示します。さらに同じスケジュールを、crontab、GitHub Actions、Vercel、Kubernetesですぐ使える形で提供します。
- ボックスに式を入力または貼り付けるか、プリセットのいずれかをクリックします。@dailyや@weeklyのような短縮形も使えます。
- またはビルダーを使います。5つのフィールドそれぞれで、毎回、N回ごと、特定の値、範囲から選べます。選択に合わせて式が更新されます。
- 日本語の解説文を読んで、スケジュールが意図どおりか確認します。61分やフィールドの不足などのエラーは、具体的に示されます。
- タイムゾーンを選ぶと、夏時間による変化も含めて、そのタイムゾーンでの次の10回の実行時刻を確認できます。
- お使いのプラットフォームに合った形式でスケジュールをコピーします。処理はすべてブラウザー内で行われます。
- GitHub ActionsやVercelのcronジョブなど、ほとんどのホスト型スケジューラーはスケジュールをUTCで解釈します。保存する前に現地時刻を変換しないと、ジョブが数時間早く、または遅く実行されます。
- 日フィールドと曜日フィールドの両方を指定すると、cronは両方が一致したときではなく、どちらか一方が一致したときにジョブを実行します。0 0 13 * 5は、13日の金曜日だけでなく、毎月13日と毎週金曜日に実行されます。
- 0 0 * * *ではなく、17 3 * * *のように半端な分を選びましょう。非常に多くのジョブが毎時0分に設定されているため、共有サービスやホスト型ランナーはその時間帯に最も混雑します。
- 現地時刻の01:00から03:00の間にスケジュールしたジョブは、時計の切り替え時にスキップされたり2回実行されたりすることがあります。重要なジョブはUTCで、またはその時間帯を避けてスケジュールしましょう。
- GitHub Actionsは5分より短い間隔ではスケジュールを実行せず、ランナーが混雑していると開始が遅れることもあるため、正確なタイミングを前提にしないでください。
よくある質問
5分ごとに実行するcronジョブはどう書く?
*/5 * * * *を使います。分フィールドの*/5は0から始めて5分ごとという意味なので、:00、:05、:10のように実行されます。10分ごとや15分ごとにするには、数字を10や15に変えます。
cronの*/はどういう意味?
スラッシュは間隔(ステップ)を指定します。分フィールドの*/15は、毎時15分おき、つまり0、15、30、45分を意味します。範囲に対してステップを指定することもでき、時フィールドの9-17/2は9、11、13、15、17時を意味します。
cronでは日曜日は0と7のどちら?
どちらも日曜日です。標準のcronは日曜日として0と7の両方を受け付け、月曜日の1から土曜日の6までが続きます。SUNやMONなどの曜日名を使えば、この問題自体を避けられます。
式のフィールドが6つや7つあるのはなぜ?
Quartz、Spring、一部のクラウドスケジューラーは、先頭に秒フィールドを、場合によっては末尾に年を追加します。標準のcrontab、GitHub Actions、Vercel、Kubernetesは5つのフィールドを使います。このツールは5フィールド形式を読み取るので、秒フィールドを外して残りを確認してください。
cronはどのタイムゾーンを使う?
crontabは、システムがCRON_TZやTZの設定に対応していない限り、実行されるサーバーのタイムゾーンを使います。GitHub ActionsとVercelはUTCを使います。KubernetesのCronJobは、specでtimeZoneフィールドを設定しない限り、コントローラーのタイムゾーンを使います。
cron式の読み方
- フィールドを左から右へ読みます。この分に、この時の、月のこの日に、この月に、この曜日に、という順です。星印は任意の値を意味します。つまり30 6 * * 1は、6時30分、月の任意の日、任意の月、月曜日、と読みます。毎週月曜日の06:30ということです。
- 各フィールドには、単一の値、リスト(1,15)、範囲(1-5)、ステップ(*/10)、またはその組み合わせ(0-30/10,45)を入れられます。このページのビルダーがこれらを書いてくれ、解説文が結果を読み上げるので確認できます。
日と曜日のわな
- 両方の日付フィールドに星印以外の値があると、cronはそれらをどちらか一方の条件として扱います。0 0 1 * 1に設定したジョブは、毎月1日と毎週月曜日に実行されます。月の第1月曜日を想定していた多くの人がこれに驚きます。
- cronでは第1月曜日を直接表現できません。一般的な回避策は、0 0 1-7 * *でスケジュールし、月曜日でなければスクリプトを終了させるか、それ専用の構文を持つスケジューラーを使うことです。
スケジュールが実行される場所
- 下のどのプラットフォームも同じ5つのフィールドを使いますが、記述の形式はそれぞれ異なり、独自のルールを追加しているものもあります。ツールからお使いのプラットフォーム用のスニペットをコピーし、プランごとのジョブ実行頻度の制限についてドキュメントを確認しましょう。
- 5分ごと
- 15分ごと
- 毎時0分
- 6時間ごと
- 毎日0時
- 平日の9:00
- 毎週金曜日の17:30
- 毎週日曜日の3:00
- 毎月1日
- 各四半期の初日の8:00
- 勤務時間中の10分ごと
- 年1回、1月1日
cronフィールドの各記号の意味
- 範囲内のステップ
- 分フィールドの*/10
- 0、10、20、30、40、50分
- JAN-DEC
- 月名(大文字小文字は問わない)
- 6月から8月
- SUN-SAT
- 曜日名。0と7はどちらも日曜日
- sat,sun
- 週末
- @daily
- 0 0 * * *の短縮形
- @hourly, @weekly, @monthly, @yearly
- 5フィールド形式と同じ
分
時
日
月
曜日
{field}のモード
毎回
N回ごと
特定の値
範囲
{field}のステップ
{field}の値(カンマ区切り)
{field}の開始
{field}の終了
スケジュール
cron式
式をコピー
フィールドごとに作成
下のフィールドを変更すると、上の式が置き換えられます。
次の10回の実行
タイムゾーン
時計を読み込み中…
今後5年間に実行がありません。日と月のフィールドを確認してください。たとえば30日しかない月に31を指定していないかなどです。
実行時刻を見るには式を修正してください。
実行間隔が5分未満です。GitHub Actionsはこの頻度ではスケジュールしません。
プラットフォーム用にコピー
スニペットをコピー
crontab -eでこの行を追加します。サーバーのタイムゾーンで実行されます。コマンドは自分のものに置き換えてください。
.github/workflows配下のワークフローファイルに記述します。GitHubはスケジュールをUTCで解釈します。
VercelはスケジュールをUTCで解釈し、指定したパスをGETリクエストで呼び出します。
timeZoneフィールドで、スケジュールをどのタイムゾーンで解釈するかを指定します。imageとcommandは自分のジョブに置き換えてください。
よく使うスケジュール
よく使うcronスケジュール
式
実行タイミング
cronの構文
無料で始める · クレジットカード不要
関連: 無料ツール|ビジネス向け計算・生成ツール
製品
ご利用いただける方
機能
リソース
会社情報
サイトマップを見る