23
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

crontabで奇数分や偶数分などに実行する指定を簡単に書く方法

Last updated at Posted at 2017-02-10

*/2

cron で2分毎にコマンド実行をしたいときって */2 とかって書くことよくありますよね。5分毎なら */5 とか。

1,3,5,7,...

で、よくあるパターンですが2台のサーバがあって、片方は 0,2,4,6,.. のタイミングで実行して、もう一方では 1,3,5,7,... のタイミングで実行したいこともよくありますよね?こういうとき前者は */2 でいいんだけど、後者はカンマで列挙するのが辛い…みたいな思いをすることもしばしば。

1-59/2

実はこれ 1-59/2 って書けば奇数分に実行するっていう意味にになるんですって。20年近く cron 使ってて初めて知りました!

割り算じゃなくてステップ数

1-59/2 の 2 って割り算をして余りがゼロになるかどうかをチェックしてるんだとずっと思ってたんですが、実はこれ範囲値に対するステップ数なんですね。

3n + m

なので、0-59/31-59/32-59/3 みたいに書けば 3n + m 分に実行するなんてことも簡単に出来ちゃいます。

man 5 crontab

実は man 5 crontab をちゃんと読むと最後の方の拡張ってとこにちゃんとサンプル付きで説明が書いてあるんですね。悩む前に man くらいちゃんと読めって事ですね…、反省。

ちなみに man crontab だと crontab コマンドのマニュアルが出てきてしまうので、crontab の書式についてのマニュアルは man 5 crontab ってする必要がありますので注意してください。

ところで man 5 って日本語だとなんだか口に出して読みにくいですよね。脳内で読むだけでもなんかソワソワしちゃうのは僕だけだろうか…。

23
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?