cron

Unix 系 OS のスケジュール実行の仕組みと、cron 式によるスケジュール定義

自動化

cron とは

cron は Unix 系 OS のスケジュール実行の仕組みで、指定した日時にコマンドを自動実行する。AWS では EventBridge (旧 CloudWatch Events) が cron 式でスケジュール実行を提供する。

cron 式

┌───────── 分 (0-59)
│ ┌─────── 時 (0-23)
│ │ ┌───── 日 (1-31)
│ │ │ ┌─── 月 (1-12)
│ │ │ │ ┌─ 曜日 (0-6, 0=日曜)
│ │ │ │ │
* * * * *
意味
0 9 * * * 毎日 9:00
*/5 * * * * 5 分ごと
0 0 * * 1 毎週月曜 0:00
0 0 1 * * 毎月 1 日 0:00
0 9-17 * * 1-5 平日 9:00〜17:00 の毎時

AWS の cron 式は 6 フィールド (秒なし、年あり) で、曜日と日の同時指定に ? を使う。

AWS cron vs Unix cron

観点 Unix cron AWS EventBridge
フィールド数 5 6 (年を含む)
曜日 0-6 (0=日) 1-7 (1=日) or SUN-SAT
? なし 日 or 曜日に使用
タイムゾーン サーバーのローカル UTC (EventBridge Scheduler で指定可能)

GitHub Actions のスケジュール

on:
  schedule:
    - cron: '0 0 * * 1'  # 毎週月曜 0:00 UTC

よくある間違い

  • UTC とローカル時間の混同 → cron(0 0 * * ? *) は UTC の 0:00 = JST の 9:00
  • 曜日と日を同時に指定 → AWS では片方を ? にする
  • 実行間隔が短すぎる → Lambda の同時実行上限に注意

cron の関連書籍も参考になる。

関連用語