Cron式チートシート

AI作成データこのコンテンツのデータはAIが公式資料や辞書を参照して作成しました。正確さを心がけていますが、誤りが含まれる可能性があります。

Cron式(crontab)の書き方を網羅したチートシート。5フィールドの基本構文・特殊文字(*, /, -, ,)・@dailyなどのショートカット・よく使うパターン・プラットフォーム別の違いまで実例付きで解説。

Cron式の構文と実用パターンをすぐ引ける

基本フォーマット

標準的なCron式は5つのフィールドで構成されます。左から「分・時・日・月・曜日」の順で、スペースで区切ります。

cron
# 5フィールド形式(標準Unix/Linux crontab)
┌───────────── 分 (0-59)
│ ┌───────────── 時 (0-23)
│ │ ┌───────────── 日 (1-31)
│ │ │ ┌───────────── 月 (1-12)
│ │ │ │ ┌───────────── 曜日 (0-7, 0と7は日曜)
│ │ │ │ │
* * * * *

各フィールドの値の範囲

フィールド値の範囲補足
0-59
0-230は深夜0時
1-31
1-12JAN-DECも使用可(一部環境)
曜日0-70と7は日曜(多くのLinux環境)、MON-SUNも使用可(一部環境)

特殊文字

Cron式のフィールドには、数値のほかに特殊文字を使って柔軟なスケジュールを指定できます。

標準特殊文字(すべての環境で使用可能)

文字名前説明
*ワイルドカードすべての値にマッチ* * * * * = 毎分実行
/ステップ間隔を指定*/15 * * * * = 15分ごと
-範囲連続する範囲を指定0 9-17 * * * = 9時から17時の毎正時
,リスト複数の値を列挙0 0,12 * * * = 0時と12時
cron
# 特殊文字の組み合わせ例
*/5 * * * *       # 5分ごとに実行
0 9-17 * * *      # 9時〜17時の毎正時
0 9 * * 1-5       # 平日(月〜金)の午前9時
0 0,12 * * *      # 0時と12時に実行
0 */2 * * *       # 2時間ごと(0, 2, 4, ... 22時)
*/10 9-17 * * 1-5 # 平日9〜17時の10分ごと

拡張特殊文字(Quartz Scheduler / AWS等の一部環境専用)

文字名前説明
?無指定日または曜日で「未指定」を表す0 9 ? * MON = 毎週月曜9時
L最終月の最終日、または最終曜日0 0 L * * = 毎月末日
W平日指定日に最も近い平日0 0 15W * * = 15日に最も近い平日
#第N番月の第N曜日を指定0 9 * * 5#3 = 第3金曜日の9時

注意: ?LW# は標準のcrontabやGitHub Actionsでは使用できません。Quartz Scheduler(Java/Spring)やAWS EventBridgeなど特定の環境でのみ有効です。

特殊文字列(ショートカット)

crontabでは、よく使うスケジュールを簡潔に指定できる特殊文字列が用意されています。

文字列等価なCron式説明
@yearly0 0 1 1 *年1回(1月1日 0:00)
@annually0 0 1 1 *@yearlyと同じ
@monthly0 0 1 * *月1回(毎月1日 0:00)
@weekly0 0 * * 0週1回(毎週日曜 0:00)
@daily0 0 * * *日1回(毎日 0:00)
@midnight0 0 * * *@dailyと同じ
@hourly0 * * * *時1回(毎時 0分)
@reboot-システム起動時に1回実行
bash
# crontabファイルでの使用例
@daily /usr/local/bin/backup.sh
@hourly /usr/local/bin/sync.sh
@reboot /usr/local/bin/startup.sh

よく使うパターン

実務で頻繁に使われるCron式パターンの一覧です。

基本パターン

Cron式説明
* * * * *毎分
0 * * * *毎時0分(毎正時)
0 0 * * *毎日 0:00
0 9 * * *毎日 9:00
0 9 * * 1-5平日(月〜金)の 9:00
0 0 1 * *毎月1日 0:00
0 0 1 1 *毎年1月1日 0:00

間隔パターン

Cron式説明
*/5 * * * *5分ごと
*/15 * * * *15分ごと
*/30 * * * *30分ごと
0 */2 * * *2時間ごと
0 */6 * * *6時間ごと
0 */12 * * *12時間ごと

曜日パターン

Cron式説明
0 9 * * 1毎週月曜日 9:00
0 9 * * 0毎週日曜日 9:00
0 9 * * 1-5平日(月〜金) 9:00
0 9 * * 6,0週末(土日) 9:00
0 9 * * 1,3,5月・水・金 9:00

実用例

具体的なユースケースに対応するCron式の例です。

ユースケースCron式説明
毎日深夜バックアップ0 2 * * *毎日 2:00 に実行
毎週月曜レポート送信0 9 * * 1毎週月曜 9:00 に実行
毎月1日の月次処理0 0 1 * *毎月1日 0:00 に実行
営業時間中の定期監視*/5 9-18 * * 1-5平日 9:00〜18:55 の5分ごと
ログローテーション0 0 * * 0毎週日曜 0:00 に実行
SSL証明書更新チェック0 3 * * *毎日 3:00 に実行
データベースバキューム30 2 * * 0毎週日曜 2:30 に実行
四半期レポート0 9 1 1,4,7,10 *1月・4月・7月・10月の1日 9:00
bash
# crontabファイルの記述例
# 毎日2時にバックアップスクリプトを実行
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

# 平日9時にレポートを送信
0 9 * * 1-5 /usr/local/bin/send-report.sh

# 5分ごとにヘルスチェック
*/5 * * * * curl -s https://example.com/health > /dev/null

プラットフォーム別の注意点

Cron式はプラットフォームによってフォーマットや対応する機能が異なります。使用する環境に合わせて確認してください。

標準crontab(Linux/Unix)

項目内容
フォーマット5フィールド(分 時 日 月 曜日)
管理コマンドcrontab -e(編集)、crontab -l(一覧)
タイムゾーンシステムのタイムゾーン
特殊文字列@yearly @monthly @weekly @daily @hourly @reboot に対応
bash
# crontab管理コマンド
crontab -e    # crontabを編集
crontab -l    # 現在のcrontabを表示
crontab -r    # crontabを削除(注意)
crontab -u user -l  # 指定ユーザーのcrontabを表示

GitHub Actions

項目内容
フォーマット5フィールド(分 時 日 月 曜日)
タイムゾーン常にUTC(日本時間はUTC+9なので注意)
最短間隔5分(それより短い間隔は無視される)
制限事項L W # ? は使用不可
yaml
# GitHub Actions workflow の例(.github/workflows/scheduled.yml)
on:
  schedule:
    # 日本時間の毎日9時(UTCでは0時)に実行
    - cron: '0 0 * * *'
    # 日本時間の平日18時(UTCでは9時)に実行
    - cron: '0 9 * * 1-5'

AWS EventBridge(CloudWatch Events)

項目内容
フォーマット6フィールド(分 時 日 月 曜日 年)
タイムゾーンUTC
必須ルール日と曜日の片方に必ず ? を使う
拡張文字L W # に対応
text
# AWS EventBridge cron式の例
cron(0 9 ? * MON-FRI *)   # 平日UTCの9時
cron(0 0 1 * ? *)         # 毎月1日の0時
cron(0 18 ? * MON-FRI *)  # 平日UTCの18時(JST翌3時)

Quartz Scheduler(Java / Spring)

項目内容
フォーマット6-7フィールド(秒 分 時 日 月 曜日 [年])。標準crontabの5フィールドの先頭に秒フィールド(0-59)が追加される
必須ルール日と曜日の片方に必ず ? を使う
拡張文字L W # ? すべてに対応
java
// Spring Boot での使用例(@Scheduled アノテーション)
@Scheduled(cron = "0 0 9 * * MON-FRI")  // 平日9時
@Scheduled(cron = "0 0 0 L * ?")        // 毎月末日0時
@Scheduled(cron = "0 0 9 ? * 6#3")      // 第3金曜日9時

こんなときに使えます

シーン0 9 * * 1-5
得られる情報平日(月〜金)の午前9時に実行

Cron式の意味をフィールドごとに確認できる

よくある質問

crontabとcronの違いは何ですか?
cronはスケジュールされたタスクを自動実行するUnix/Linuxのデーモン(サービス)です。crontabはそのスケジュール設定ファイルのことで、「crontab -e」コマンドで編集できます。
GitHub ActionsのcronとLinuxのcrontabは同じ書き方ですか?
基本的な5フィールド形式(分・時・日・月・曜日)は共通です。ただしGitHub Actionsはタイムゾーンが常にUTCで、最短5分間隔の制限があります。L・W・#などのQuartz拡張記法は使えません。
AWSのcron式はLinuxのcrontabと互換性がありますか?
互換性はありません。AWS EventBridgeのcron式は「分・時・日・月・曜日・年」の6フィールドで、日フィールドと曜日フィールドの片方に必ず?を使う必要があります。