サイトアイコン puti se blog

奇数日・偶数日のみにcronを実行する方法。Linux crontabの指定方法

あまり滅多なことでは必要無いケースかもですが
linuxのcron実行を、奇数日のみ実行させたい場合、偶数日のみ実行させたい場合はどうcrontabを指定したら良いのでしょうか?

結論、cronで奇数日のみの実行したいcrontab日時指定方法

30 19 1-31/2 * * /root/test.sh > /root/test.log 2>&1

上記がサンプルのcrontabでの設定方法です。
ポイントは「1-31/2」の部分です。

結論、cronで偶数日のみ実行させたいcrontab日時指定方法

30 19 2-31/2 * * /root/test.sh > /root/test.log 2>&1

上記がサンプルのcrontabでの設定方法です。
ポイントは「2-31/2」の部分です。

環境・前提条件

今回確かめた環境は

で確かめています

crontabの「*/2」って何?

以下のマニュアルコマンドで上記内容が確認出来ます。

man 5 crontab

上記赤枠の説明を読みますと、要するに「/2」の「2」はステップ値とのことです。

偶数時間指定の場合

と同意味になります。
上記は偶数の指定ですが、奇数時間指定の場合は

で指定できる事がわかります。
これは、「日にち」だけでなく「時間」や「分」でも使用できる指定方法です。

ちなみにcrontabってどんな記述指定方法(フィールドの意味)だったか?

30 19 1-31/2 * * /root/test.sh > /root/test.log 2>&1

上記の意味合いは、一つ目のフェールドから順番に説明しますと

  1. 分: 0-59
  2. 時: 0-23
  3. 日: 1-31
  4. 月: 1-12 (or names, see below)
  5. 曜日: 0-7 (0 or 7 is Sunday, or use names)
  6. 最後にコマンド:

を意味しています。

なので、サンプルのcrontab指定は「奇数日の19時半に毎月どの曜日でも、test.shを実行する」という意味合いになります。

モバイルバージョンを終了