2015.07.23   |   Memo

Crontabで特定の時間を除いて毎時実行

Crontabで特定の時間を除いて毎時に実行したい時の設定方法。

0 * * * * hogehoge

こんな感じにcrontabを設定すれば、毎時00分にhogehogeが実行されるようになります。ここから深夜3時だけは動かしたくないので除外したいというケースではどう書けばよいでしょう。

crontabの設定で除外するという機能はないので、3時を除くというのを愚直に書いてみると

# 3時を除いて毎時実行
0 0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 * * * hogehoge

こんな感じになります。見た目も悪いですしタイプミスで誤作動が怖いですね。

crontabには除外はないですが連続した値をハイフンでまとめる表記があります。これを利用するともうちょっとスマートに書くことが出来ます。

# 3時を除いて毎時実行
0 0-2,4-23 * * * hogehoge

すっきりしました。