cron
Unix 系 OS のスケジュール実行の仕組みと、cron 式によるスケジュール定義
自動化
「cron」の技術書を見る →cron とは
cron は Unix 系 OS のスケジュール実行の仕組みで、指定した日時にコマンドを自動実行する。AWS では EventBridge (旧 CloudWatch Events) が cron 式でスケジュール実行を提供する。
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
AWS cron と Unix cron の違いを以下にまとめる。
| 観点 | Unix cron | AWS EventBridge |
|---|---|---|
| フィールド数 | 5 | 6 (年を含む) |
| 曜日 | 0-6 (0=日) | 1-7 (1=日) or SUN-SAT |
? | なし | 日 or 曜日に使用 |
| タイムゾーン | サーバーのローカル | UTC (EventBridge Scheduler で指定可能) |
GitHub Actions のスケジュール
GitHub Actions のスケジュールの例を示す。
on:
schedule:
- cron: '0 0 * * 1' # 毎週月曜 0:00 UTC
よくある間違い
- UTC とローカル時間の混同 →
cron(0 0 * * ? *)は UTC の 0:00 = JST の 9:00 - 曜日と日を同時に指定 → AWS では片方を
?にする - 実行間隔が短すぎる → Lambda の同時実行上限に注意
cron の関連書籍も参考になる。
この記事は役に立ちましたか?
関連用語
関連する記事
DevOps 本ガイド - CI/CD とインフラ自動化を学ぶ技術書の選び方
DevOps の文化と原則から CI/CD、IaC、オブザーバビリティまで学べる技術書の選び方と学習順序を紹介します。
Linux 本ガイド - コマンドライン / しくみ / 性能の 3 層で選ぶ技術書
Linux を学ぶ技術書の選び方を 3 層 (コマンドラインの操作 → カーネルのしくみ → 性能と運用) で整理。新しい Linux の教科書や [試して理解] Linux のしくみなどの定番書の使い分けと、学ぶ順番を解説します。
会社の書籍購入補助を使い倒す技術 - 申請が通る選書と読了につなげる仕組み
会社の書籍購入補助 (書籍購入制度) を最大限活用する方法を解説。制度の一般的なパターン、申請理由の書き方、補助で買う本と自費で買う本の切り分け、買って終わりにしない読了の仕組みまで、エンジニア向けの実践ガイドです。