Cron式生成・解説ツール【無料・登録不要】crontabの書き方を日本語で確認|次回実行日時も表示
cron(クーロン)の設定に使う「cron 式」を、画面で選ぶだけで作れる無料ツールです。「毎週月曜日の 9 時」「5 分ごと」などを選ぶと cron 式ができあがり、反対に「0 9 * * 1」のような cron 式を貼り付けると、「毎週月曜日の 9:00」のように日本語で意味を表示します。次に実行される日時も 5 回分表示するので、設定が思いどおりかをすぐに確かめられます。
Linux の crontab の書き方(分・時・日・月・曜日の 5 項目)に対応しています。次の実行日時は日本時間で計算します。入力したデータはお使いのブラウザの中だけで処理され、サーバーには一切送信されません。
画面で選んで作る
cron 式
「分 時 日 月 曜日」の 5 つを半角スペースで区切って入力すると、意味と次の実行日時を表示します。上の「画面で選んで作る」を変えると、ここに cron 式が入ります。
意味
| 項目 | 書いた値 | 意味 | 当てはまる値 |
|---|
次の実行日時(日本時間・5 回分)
よく使う例(押すと上の欄に入ります)
次の実行日時は、日本時間(UTC+9)で計算しています。cron はサーバーのタイムゾーン設定に従って動くため、サーバーが UTC の場合は 9 時間ずれます。入力したデータはブラウザ内だけで処理し、サーバーへの送信や保存は一切行いません。
使い方
画面で選んで cron 式を作る
- 「画面で選んで作る」の「実行のタイミング」で、「毎日」「毎週(曜日を選ぶ)」「○分ごと」などを選びます。
- 表示された項目(時・分・曜日・日など)を選びます。曜日は複数選べます。「平日(月〜金)」「土日」のボタンでまとめて選ぶこともできます。
- 「cron 式」の欄に、選んだ内容の cron 式が入ります。「コピー」を押してコピーし、crontab に貼り付けます。
cron 式の意味を調べる
- 「cron 式」の欄に、調べたい cron 式を貼り付けます(例:
30 4 1,15 * 5)。 - 入力と同時に「意味」に日本語の説明が表示されます。「項目ごとの意味」の表では、分・時・日・月・曜日のそれぞれに当てはまる値を確認できます。
- 「次の実行日時」に、これから実行される日時が 5 回分表示されます。
crontab の 1 行をコマンドごと貼り付けた場合は、6 項目め以降をコマンドとみなして、「コマンド部分」として分けて表示します。「日」と「曜日」の両方を指定したときの動きや、2 月 30 日のように存在しない日を指定したときなど、勘違いしやすい設定には注意を表示します。
次の実行日時を確かめる
次の実行日時は、「基準の日時」より後に実行される日時を日本時間で表示します。最初は現在の日時が入っています。「基準の日時」を変えると、たとえば「年末年始にはいつ実行されるか」のような確認もできます。「現在の日時にする」を押すと、現在の日時に戻ります。
cronとは?
cron は、Linux などの UNIX 系の OS で、決まった日時にコマンドを自動で実行する仕組みです。「毎日深夜 3 時にバックアップを取る」「5 分ごとにサーバーの状態を確認する」「毎月 1 日に集計のスクリプトを動かす」といった、定期的な作業の自動化に使われます。
cron の本体は、裏で動き続けるプログラム(デーモン)で、crond や cron という名前で動いています。いつ何を実行するかは、crontab(クーロンタブ)と呼ばれる設定ファイルに 1 行ずつ書きます。1 行は「いつ実行するか(cron 式)」と「実行するコマンド」でできています。
0 3 * * * /home/user/bin/backup.sh
この例は、「毎日 3:00 に /home/user/bin/backup.sh を実行する」という意味です。先頭の「0 3 * * *」が cron 式です。
crontab の編集と確認
自分のユーザーの crontab は、crontab コマンドで編集します。次のコマンドを実行すると、エディターが開いて crontab を編集できます(使われるエディターは、環境変数 VISUAL または EDITOR で決まります)。保存して閉じると、設定が反映されます。
crontab -e
今の設定を表示するには、次のコマンドを実行します。
crontab -l
なお、crontab -r は crontab を確認なしで丸ごと削除するコマンドです。-e(編集)と -r(削除)はキーボードで隣り合っているため、打ち間違いに注意してください。
cron 式の書き方
cron 式は、「分 時 日 月 曜日」の 5 つの項目を半角スペースで区切って書きます。それぞれの項目に書いた条件にすべて当てはまる時刻に、コマンドが実行されます(「日」と「曜日」だけは例外があります。後で説明します)。
| 順番 | 項目 | 書ける値 |
|---|---|---|
| 1 | 分 | 0〜59 |
| 2 | 時 | 0〜23 |
| 3 | 日 | 1〜31 |
| 4 | 月 | 1〜12、または jan〜dec |
| 5 | 曜日 | 0〜7(0 と 7 はどちらも日曜日)、または sun〜sat |
曜日は、0 が日曜日、1 が月曜日、…、6 が土曜日です。日曜日は 0 と 7 のどちらでも書けます。月と曜日は、英語の最初の 3 文字(jan、feb … や sun、mon …)でも書けます。大文字と小文字は区別しません。
使える記号
| 記号 | 意味 | 例 |
|---|---|---|
| * | すべての値(毎分・毎時・毎日など) | 時に * → 毎時 |
| ,(カンマ) | 値を並べる(リスト) | 時に 9,18 → 9 時と 18 時 |
| -(ハイフン) | 範囲(両端を含む) | 曜日に 1-5 → 月曜日〜金曜日 |
| /(スラッシュ) | 範囲の中で、いくつおきか(ステップ) | 分に */15 → 0、15、30、45 分 時に 9-17/2 → 9、11、13、15、17 時 |
「/」は、「*」か範囲(a-b)の後ろに付けます。「*/15」は「0 から 15 ずつ」なので、分の項目なら 0・15・30・45 分になります。リストと範囲は組み合わせられ、「1-5,10」のようにも書けます。月と曜日では、「mon-fri」「jan,apr,jul,oct」のように名前で範囲やリストを書くこともできます。
「@daily」などの別名
よく使う設定には、5 つの項目の代わりに書ける別名があります。
| 別名 | 同じ意味の cron 式 | 意味 |
|---|---|---|
| @yearly(@annually) | 0 0 1 1 * | 毎年 1 月 1 日の 0:00 |
| @monthly | 0 0 1 * * | 毎月 1 日の 0:00 |
| @weekly | 0 0 * * 0 | 毎週日曜日の 0:00 |
| @daily(@midnight) | 0 0 * * * | 毎日 0:00 |
| @hourly | 0 * * * * | 毎時 0 分 |
| @reboot | (なし) | cron が起動したときに 1 回 |
別名は小文字で書きます。@midnight は cronie の crontab(5) のマニュアルには載っていませんが、cronie(Fedora や Red Hat Enterprise Linux などで使われている cron)と Debian の cron のソースコードでは、どちらも @daily と同じ意味として扱われています。
よくある設定例
次の例は、ツールの「よく使う例」からも選べます。
| cron 式 | 意味 |
|---|---|
| * * * * * | 毎分 |
| */5 * * * * | 5 分ごと(毎時 0、5、10 … 55 分) |
| 0 * * * * | 毎時 0 分(1 時間ごと) |
| 0 */2 * * * | 2 時間ごと(0:00、2:00、4:00 … 22:00) |
| 0 9 * * * | 毎日 9:00 |
| 0 9,18 * * * | 毎日 9:00 と 18:00 |
| 0 9 * * 1-5 | 平日(月曜日〜金曜日)の 9:00 |
| 30 18 * * 5 | 毎週金曜日の 18:30 |
| 0 3 * * 0 | 毎週日曜日の 3:00 |
| */15 9-17 * * 1-5 | 平日の 9 時台〜17 時台に 15 分ごと(9:00〜17:45) |
| 0 0 1 * * | 毎月 1 日の 0:00 |
| 0 0 1 */3 * | 1・4・7・10 月の 1 日の 0:00(3 か月ごと) |
| 0 0 1 1 * | 毎年 1 月 1 日の 0:00 |
「*/15 9-17 * * 1-5」の最後の実行は 17:45 です。「9-17」は 9 時台から 17 時台までという意味なので、17 時台の 0・15・30・45 分にも実行されます。17:00 ちょうどで終わりにしたいときは、「*/15 9-16 * * 1-5」と「0 17 * * 1-5」の 2 行に分けて書きます。
よくある間違い
「日」と「曜日」の両方を指定すると「どちらか」になる
cron でいちばん勘違いしやすいのがこの点です。「日」と「曜日」の両方に * 以外を書くと、どちらか一方に当てはまる日に実行されます(両方に当てはまる日だけではありません)。
たとえば「0 0 13 * 5」は「13 日の金曜日」ではなく、「毎月 13 日」と「毎週金曜日」の両方で実行されます。crontab(5) のマニュアルにも、「30 4 1,15 * 5」は毎月 1 日と 15 日の 4:30 に加えて、毎週金曜日にも実行されるという例が載っています。
注意が必要なのは、「*/2」のように * で始まる書き方です。cronie や Debian の cron(Vixie cron がもと)は、項目の先頭が「*」かどうかで「指定なし」と判断します。そのため、「0 0 */2 * 1」は「奇数日」と「月曜日」の両方に当てはまる日だけに実行されます。このツールも同じ判断で計算しています(ほかのソフトウェアやライブラリでは扱いが違う場合があります)。
「第 2 月曜日」や「13 日の金曜日」のような指定は、cron 式だけではできません。日を「8-14」のように絞って毎日実行し、実行するコマンドの中で曜日を確かめる方法があります。
サーバーのタイムゾーンが日本時間ではない
cron は、サーバー(cron が動いているパソコン)のタイムゾーンの時刻で動きます。クラウドのサーバーなどでタイムゾーンが UTC(協定世界時)になっていると、「0 9 * * *」は日本時間の 18:00 に実行されます。設定する前に、サーバーで次のコマンドを実行して、表示される時刻が日本時間かどうかを確かめましょう。
date
このツールの「次の実行日時」は日本時間で計算しています。サーバーが UTC の場合は、表示された時刻から 9 時間を引いた日本時間に実行されると考えてください(UTC の 0:00 は日本時間の 9:00 です)。
月末を指定できない・存在しない日は実行されない
Linux の crontab には「月末」を表す書き方がありません。「31」と書くと、31 日がない月(2・4・6・9・11 月)には実行されません。また、「0 0 30 2 *」(2 月 30 日)のように存在しない日を指定すると、エラーにはならず、一度も実行されません。「29 2」(2 月 29 日)はうるう年にしか実行されません。
月末に実行したいときは、日を「28-31」にして毎日実行し、コマンドの中で「明日が 1 日かどうか」を確かめる方法がよく使われます。GNU の date コマンドがある Linux では、次のように書けます。
0 23 28-31 * * [ "$(date -d tomorrow +\%d)" = "01" ] && /home/user/bin/monthly.sh
コマンドの中の「%」が改行に変わる
crontab のコマンド部分に書いた「%」は、改行として扱われます(最初の「%」より後ろは、コマンドの標準入力に渡されます)。date コマンドの「+%Y%m%d」のように「%」をそのまま使いたいときは、上の例の「\%d」のように、前に「\」を付けます。
「5/10」や「22-2」のような書き方
「/」は「*」か範囲の後ろにしか書けません。「5 分から 10 分ごと」にしたいときは、「5/10」ではなく「5-59/10」と書きます(5、15、25、35、45、55 分)。また、範囲は折り返せないため、22 時〜翌 2 時は「22-2」ではなく「22-23,0-2」と書きます。このツールでは、どちらの書き方もエラーとして書き直し方を表示します。
ほかのサービスの cron 式をそのまま使う
cron 式の書き方は、ソフトウェアやサービスによって少しずつ違います。たとえば Amazon EventBridge のスケジュールルールは、年を加えた 6 項目で書き、「?」「L」「W」「#」などの記号を使います。Linux の crontab にはこれらの記号がないため、そのままでは使えません。GitHub Actions のスケジュール実行は 5 項目の書き方ですが、初期設定では UTC で動きます。使う場所のドキュメントで、書き方とタイムゾーンを確認しましょう。
よくある質問
入力したデータは保存されませんか?
保存されません。cron 式の作成・解析・次の実行日時の計算は、すべてお使いのブラウザの中で行われ、サーバーへの送信も保存も行いません。crontab の 1 行をコマンドごと貼り付けても、外部に送られることはありません。ページを閉じると入力内容は消えます。
秒単位で実行できますか?
Linux の crontab の cron 式は「分」がいちばん細かい単位なので、1 分より短い間隔は指定できません。秒を含む 6 項目以上の cron 式(Quartz などの書き方)には、このツールは対応していません。
次の実行日時は、どのタイムゾーンで表示されますか?
日本時間(UTC+9)です。お使いのパソコンのタイムゾーン設定には関係なく、常に日本時間で計算します。実際に cron が動くサーバーのタイムゾーンが日本時間でない場合は、時刻がずれるので注意してください。
「~」や「H」を使った cron 式に対応していますか?
対応していません。「~」は cronie の、ランダムな時刻を選ぶための独自の書き方で、「H」は Jenkins などの書き方です。このツールは、Linux の crontab で広く使える 5 項目の書き方(*、カンマ、ハイフン、スラッシュ、英字の名前、@ で始まる別名)を対象にしています。
関連する記事・ツール
- Unix時間変換ツール【無料・登録不要】タイムスタンプ⇔日本時間・UTC・ISO 8601
- chmod 計算(Linux のパーミッション)
- Git コマンド検索
- JSON整形ツール【無料・登録不要】インデント・圧縮・構文チェック|エラー箇所を日本語で表示