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 を扱う際にも使えるだろう。