web-dev-qa-db-ja.com

Crontabは、毎週土曜日に、この土曜日から2週間ごとに実行されます

今日は2014年10月3日金曜日3:58 AM

このようなcronjobを次の日付に実行するようにスケジュールしたいと思います。

  1. 2014年10月4日土曜日午前8:00
  2. 2014年10月18日土曜日午前8時
  3. 2014年11月1日土曜日午前8時... ...

つまり、2週間ごと、土曜日の8時です。

11
kupa
_0 8 * * 6 test $((10#$(date +\%W)\%2)) -eq 1 && yourCommand
_

_date +%W_:月曜日を週の最初の日とする年の週番号、今日は週39

10#$(date +%W):_date +W_を10進数に変換し、シェルベースの解析の混乱を回避

$((39%2)):剰余演算:結果は0(偶数の週番号)または1(奇数の週番号)、今週の結果は1、翌週は0

_test 1 -eq 1_:算術テスト(等しい)、この場合、結果はブール値true

_&& yourCommand_:ブールAND:前のコマンドの結果がブールtrueの場合にのみyourCommandを実行

その年は2つの奇数週になる可能性があることに注意してください:53(今年)と1(翌年)

27
Cyrus

あなたが示したのは「毎週」です。次に、コードは次のとおりです。

0 8 * * 6

2週間ごとに実行する必要がありますか?

0 8 * * 6 expr `date +\%s` / 604800 \% 2 >/dev/null || yourCommand
4
Glueon