Rebounder Tech Blog

運用している当事者が書く、本番システムの記録。

ツール

cron 式を日本語で読む

crontab・GitHub Actions・Cloud Scheduler の cron 式を貼ると、意味と次の実行時刻を出します。
計算はブラウザの中だけで行い、入力した式はどこにも送りません。

平日(月〜金) 9:00

欄書いた値当てはまる値
分00
時99
日*すべて
月*すべて
曜日1-5月〜金

次の実行時刻

サーバーの時刻が日本時間(TZ=Asia/Tokyo)の場合。

  1. 2026/10/27(火) 09:00
  2. 2026/10/28(水) 09:00
  3. 2026/10/29(木) 09:00
  4. 2026/10/30(金) 09:00
  5. 2026/11/02(月) 09:00

よく使う書き方

押すと上の欄に入ります。

5分ごと
毎時0分
毎日0時
平日の9時
毎週金曜18:30
毎月1日の0時
平日9〜18時の毎時
平日の営業時間に10分ごと
四半期の初日
毎週日曜3時(メンテ枠)
土日の0時
毎年1月1日

書き方の早見表

┌───────── 分(0〜59)
│ ┌─────── 時(0〜23)
│ │ ┌───── 日(1〜31)
│ │ │ ┌─── 月(1〜12 または JAN〜DEC)
│ │ │ │ ┌─ 曜日(0〜7 または SUN〜SAT。0 と 7 が日曜)
│ │ │ │ │
* * * * *  実行するコマンド
記号意味例
*すべて* * * * * 毎分
,並べる0 9,18 * * * 9時と18時
-範囲0 9 * * 1-5 月〜金
/間隔*/15 * * * * 15分ごと
@daily など略記@hourly・@daily・@weekly・@monthly・@yearly・@reboot

間違えやすい5つの点

  1. 日と曜日は OR。0 0 13 * 5 は「13日の金曜日」ではなく「毎月13日」と「毎週金曜日」の両方で動きます。
  2. GitHub Actions は UTC。日本時間の9時に動かすなら 0 0 * * *。月曜朝9時なら 0 0 * * 1(UTC では月曜0時)。日本時間の0〜8時台を狙うと、UTC では前日になり曜日もずれます。
  3. crontab の % は改行になる。date +%Y%m%d は date +\%Y\%m\%d と書きます。
  4. cron は PATH が短い。手で打つと動くのに cron だと動かないときは、コマンドを絶対パスで書くか、crontab の先頭に PATH=... を書きます。
  5. 60を割り切れない間隔は毎時リセット。*/7 は 56分の次が翌時0分です。

関連:Claude Codeのスケジュールタスクが止まる3つの形

よくある質問

cron 式の5つの欄は何ですか?

左から「分(0〜59)」「時(0〜23)」「日(1〜31)」「月(1〜12)」「曜日(0〜7、0と7が日曜)」です。スペースで区切ります。秒の欄はありません。

日と曜日の両方を指定するとどうなりますか?

両方を満たす日ではなく、どちらか一方を満たす日に動きます。「0 0 13 * 5」は「13日の金曜日」ではなく「毎月13日と、毎週金曜日」です。どちらかを * にすると、もう一方だけで判定されます。

GitHub Actions の schedule は日本時間ですか?

いいえ、UTC です。日本時間の朝9時に動かしたいなら、9時間引いて「0 0 * * *」と書きます。混雑時は数分〜数十分遅れることがあり、最短の間隔は5分です。

*/7 のように60を割り切れない間隔はどう動きますか?

毎時0分でリセットされます。「*/7」は 0,7,14,…,56 分で、56分の次は翌時の0分(4分後)です。厳密に7分間隔にはなりません。

6つの欄がある cron 式は使えますか?

Linux の crontab では使えません。Spring や Quartz は先頭に「秒」、AWS EventBridge は末尾に「年」が付いた6欄です。このページでは5欄の crontab 形式だけを読みます。

crontab で % を書くと動かないのはなぜですか?

crontab ではコマンド中の % が改行として扱われます。date +%Y%m%d のように書くときは \% とエスケープします。