今日は2014年10月3日金曜日3:58 AM
このようなcronjobを次の日付に実行するようにスケジュールしたいと思います。
つまり、2週間ごと、土曜日の8時です。
_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(翌年)
あなたが示したのは「毎週」です。次に、コードは次のとおりです。
0 8 * * 6
2週間ごとに実行する必要がありますか?
0 8 * * 6 expr `date +\%s` / 604800 \% 2 >/dev/null || yourCommand