開発ツール

Cron式生成・解説ツール【無料・登録不要】crontabの書き方を日本語で確認|次回実行日時も表示

Cron式生成・解説ツール【無料・登録不要】crontabの書き方を日本語で確認|次回実行日時も表示
engblog-poster

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 式を作る

      1. 「画面で選んで作る」の「実行のタイミング」で、「毎日」「毎週(曜日を選ぶ)」「○分ごと」などを選びます。
      2. 表示された項目(時・分・曜日・日など)を選びます。曜日は複数選べます。「平日(月〜金)」「土日」のボタンでまとめて選ぶこともできます。
      3. 「cron 式」の欄に、選んだ内容の cron 式が入ります。「コピー」を押してコピーし、crontab に貼り付けます。

      cron 式の意味を調べる

      1. 「cron 式」の欄に、調べたい cron 式を貼り付けます(例:30 4 1,15 * 5)。
      2. 入力と同時に「意味」に日本語の説明が表示されます。「項目ごとの意味」の表では、分・時・日・月・曜日のそれぞれに当てはまる値を確認できます。
      3. 「次の実行日時」に、これから実行される日時が 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
      @monthly0 0 1 * *毎月 1 日の 0:00
      @weekly0 0 * * 0毎週日曜日の 0:00
      @daily(@midnight)0 0 * * *毎日 0:00
      @hourly0 * * * *毎時 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 項目の書き方(*、カンマ、ハイフン、スラッシュ、英字の名前、@ で始まる別名)を対象にしています。

      関連する記事・ツール

      ABOUT ME
      hr
      hr
      エンジニアとして働いている hr です。仕事や資格勉強で「こんなツールがあれば」と感じたものを、無料Webツールと解説記事にして発信しています。
      記事URLをコピーしました