cron式の書き方 完全ガイド - 5フィールドの読み方と実例

公開: 2026-05-14 / カテゴリ: 開発全般 / 読了 9分

サーバーで定期実行を組むときに必ず出てくる「cron式」。0 3 * * * のような記号の羅列は最初こそ難解に見えますが、ルールは5つの欄を順番に読むだけです。本記事を読めば、よくあるスケジュールは自分で書けるようになります。

書いた式が正しいか不安なときは cron式ビルダー で次回実行時刻を確認しながら読むのがおすすめです。

1. cron式は「5つのフィールド」でできている

標準的なcron(Linuxのcrontab)は、半角スペースで区切られた5つの欄で1つのスケジュールを表します。

┌───── 分      (0-59)
│ ┌─── 時      (0-23)
│ │ ┌─ 日      (1-31)
│ │ │ ┌ 月      (1-12)
│ │ │ │ ┌ 曜日  (0-7, 0と7は日曜)
│ │ │ │ │
* * * * *  実行するコマンド
位置フィールド範囲
10–59
20–23
31–31
41–12
5曜日0–7(0と7=日曜、1=月曜 … 6=土曜)

2. 4つの記号を覚えれば十分

記号意味
*すべての値(毎回)分の欄が * → 毎分
,複数指定0,30 → 0分と30分
-範囲1-5 → 月〜金
/間隔(〜ごと)*/15 → 15分ごと

3. よく使うスケジュール例

cron式意味
* * * * *毎分
*/5 * * * *5分ごと
0 * * * *毎時0分(1時間ごと)
0 3 * * *毎日 午前3時
30 9 * * 1-5平日(月〜金)9時30分
0 0 * * 0毎週日曜の0時
0 0 1 * *毎月1日の0時
0 0 1 1 *毎年1月1日の0時
15 14 1 * *毎月1日 14時15分
0 22 * * 1-5平日 22時

4. 「日」と「曜日」を両方指定したときの落とし穴

要注意:多くのcron実装では、「日」と「曜日」の両方を指定すると、どちらか一方が一致した日に実行されます(AND ではなく OR)。

例えば 0 0 1 * 1 は「毎月1日」かつ「毎週月曜」ではなく、「毎月1日」または「毎週月曜」に実行されます。「毎月第1月曜だけ」のような条件は単純なcron式では表現できないため、スクリプト側で日付を判定する必要があります。

5. 環境による違いに注意

特殊文字列同等のcron式
@hourly0 * * * *
@daily / @midnight0 0 * * *
@weekly0 0 * * 0
@monthly0 0 1 * *
@yearly / @annually0 0 1 1 *

6. crontabの基本操作

crontab -e    # 編集
crontab -l    # 一覧表示
crontab -r    # 全削除(取り扱い注意)

1行に1スケジュールを書きます。実行コマンドの絶対パス指定と、ログ出力のリダイレクトを付けておくとトラブル時に追いやすくなります。

0 3 * * * /usr/bin/python3 /opt/app/backup.py >> /var/log/backup.log 2>&1

7. ハマったときの確認手順

8. まとめ

実際に式を組み立てて次回実行時刻を確かめるなら cron式ビルダー をどうぞ。

記事に関連するツール

この記事をシェア