首先看看这个关于服务器故障的答案:
Same question using only cron job
这应该是条目:
0 8 * * 6 test $((10#$(date +\%W)\%2)) -eq 1 && yourCommand
第一部分是每个星期六早上 8:00,第二部分你可以在控制台上尝试这个测试:
test $((10#$(date +\%W)%2)) -eq 1 && echo odd || echo even
这段代码的作用是获取一年中的周数,并获取它是偶数还是奇数
如果我们把它翻译成红宝石
every '0 8 * * 6' do
rake 'prj:task1', output: 'log/task1.log'
end
并在您的任务中添加执行测试子句以了解您在哪个星期六,在这种情况下您测试一年中的一周
Time.now.strftime('%W').to_i
=> 15
Time.now.strftime('%W').to_i % 2
=> 1
然后尝试根据自己的需要应用它
所以只在一年中的偶数周或奇数周执行
if Time.now.strftime('%W').to_i % 2 == 1
puts "odd do something"
else
puts "even do not do anything"
end
我不确定是否将 if 修饰符直接添加到 when shcedule 是否有效
every '0 8 * * 6' do
if Time.now.strftime('%W').to_i % 2 == 1
rake 'prj:task1', output: 'log/task1.log'
end
end