Corredor

ウェブ、プログラミングの勉強メモ。

Jenkins で定期実行!cron の書き方

Jenkins ジョブを定期的に実行するには、ジョブ定義から「定期的に実行」を選び、cron (crontab) の書式で日時を指定してやる。今回はこの cron の書式をおさらいする。

そもそも cron って?

cron とは、UNIX 系のコマンドで、任意のコマンドを任意実行するスケジュール管理のためのコマンド。「時」の神様クロノスが由来だとか、「Command Run ON」の略だとか、諸説あるらしい。読み方としては、「クロン」か「クーロン」が良さそう。「クローン」だと Clone と間違えそう。

crontab コマンドによってスケジュールを変更し、crond デーモンが実行する。crontab は cron Tables、ということだろう。

cron の書式

Jenkins のビルド・トリガ設定のヘルプにも表示されているので大体分かると思うが、cron は以下のように記述する (このコメントの書き方好きw)。

+------------ 分 (0〜59)
| +---------- 時 (0〜23)
| | +-------- 日 (1〜31)
| | | +------ 月 (1〜12)
| | | | +---- 曜日 (0〜6)
| | | | |
H * * * *

cron の場合は、「曜日」の後ろに実行したいコマンドを書くが、Jenkins ジョブ定義の場合はこの5つの指定で OK。

「分」は、ジョブ実行タイミングがズレても良いように、任意の時刻に行う、という意味で H (ハッシュ) と書くことが多い。

いずれの項目も、* で全ての範囲を示す。「時」が * なら、毎時間実行される、ということ。

1-5 のように書けば範囲指定ができるし、*/2 などとすれば「1日おき」といった指定も可能。カンマで複数値を指定したりもできる。

曜日は 0 が日曜。cron コマンドの場合、7 も日曜を示す場合もあるようだが、0 から 6 で覚えておくのが確実。

サンプル

こんな風に指定すれば、任意のタイミングでジョブを実行できる。

  • 毎日10時 (分は任意) に実行する
    • H 10 * * *
  • 毎日9時、12時、15時に実行する
    • H 9,12,15 * * *
  • 平日 (月〜金) の9時に実行する
    • H 9 * * 1-5
  • 土日の9時に実行する
    • H 9 * * 0,6

この知識はそのまま cron に活かせるので、Linux を扱う際にも使えるだろう。

UNIXシェルスクリプトコマンドブック 第3版 (コマンドブックシリーズ)

UNIXシェルスクリプトコマンドブック 第3版 (コマンドブックシリーズ)