開発ツール

cron式の書き方・スケジュール設定の完全ガイド

cronはLinux/Unixシステムで定期的なタスクを自動実行するためのスケジューラです。バックアップ、ログのローテーション、メール送信など、繰り返し実行するジョブの設定に欠かせません。この記事では、cron式の構文から実用的なパターンまで徹底解説します。

cronとは

cron(クロン)は、指定した時刻やスケジュールでコマンドを自動実行するデーモン(常駐プログラム)です。設定はcrontab(cron table)と呼ばれるファイルで管理します。

# crontabの編集
crontab -e

# 現在のcrontabを表示
crontab -l

# crontabを削除
crontab -r

cron式の5フィールド構造

┌───────────── 分 (0-59)
│ ┌───────────── 時 (0-23)
│ │ ┌───────────── 日 (1-31)
│ │ │ ┌───────────── 月 (1-12)
│ │ │ │ ┌───────────── 曜日 (0-7, 0と7は日曜)
│ │ │ │ │
* * * * * コマンド
フィールド範囲説明
0-59何分に実行するか
0-23何時に実行するか(24時間表記)
1-31何日に実行するか
1-12何月に実行するか
曜日0-7何曜日に実行するか(0=日, 1=月, ...7=日)

特殊文字の使い方

文字意味
*すべての値* * * * *(毎分)
,複数の値0,15,30,45 * * * *(0,15,30,45分)
-範囲0 9-17 * * *(9時〜17時の毎正時)
/間隔*/5 * * * *(5分ごと)

よく使うcron式パターン集

cron式スケジュール
* * * * *毎分実行
*/5 * * * *5分ごと
0 * * * *毎時0分(1時間ごと)
0 0 * * *毎日深夜0時
0 9 * * 1-5平日の午前9時
0 9,18 * * *毎日9時と18時
30 2 * * 0毎週日曜の午前2:30
0 0 1 * *毎月1日の深夜0時
0 0 1 1 *毎年1月1日の深夜0時
0 3 * * 1毎週月曜の午前3時(週次バックアップ)
*/10 9-17 * * 1-5平日の営業時間中10分ごと
0 0 15 * *毎月15日の深夜(給料日処理など)

cronの注意点

タイムゾーン:cronはサーバーのシステム時刻で動作します。UTCとJSTの差(+9時間)に注意してください。

PATH環境変数:cronはユーザーのシェル環境を引き継がないため、コマンドはフルパスで指定するか、crontab内でPATHを設定してください。

出力のリダイレクト:出力を> /dev/null 2>&1にリダイレクトしないと、実行のたびにメールが送信される場合があります。

よくある質問

cronジョブが動かない原因は?

よくある原因:1. PATH未設定でコマンドが見つからない 2. パーミッション不足 3. crontabの書式エラー 4. ログを確認(/var/log/cron または journalctl)

秒単位のスケジュールはできますか?

標準のcronは分単位が最小です。秒単位が必要な場合は、systemd timerやスクリプト内でsleepを使う方法があります。

cronとsystemd timerの違いは?

systemd timerはより柔軟な設定(起動後の遅延実行、依存関係の定義など)が可能ですが、cronはシンプルで広く普及しています。

cron式ジェネレーターを使ってみる

GUIで直感的にcron式を作成。次の実行日時もリアルタイムで確認できます。

ツールを開く →