[英]Rails loading/requiring from/within lib/schedule.rb [whenever]
[英]how to schedule task (whenever schedule.rb) to run on every alternate Saturday?
計划任務已嘗試:
every '0 1 * * 6#2' do
rake 'prj:task1', output: 'log/task1.log'
end
觀察錯誤:
gems/whenever-0.10.0/lib/whenever/cron.rb:154:in `parse_as_string': Couldn't parse: 0 1 8-14 (ArgumentError)
首先看一下有關服務器故障的答案:
這應該輸入:
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修飾符直接添加到whenced操作中
every '0 8 * * 6' do
if Time.now.strftime('%W').to_i % 2 == 1
rake 'prj:task1', output: 'log/task1.log'
end
end
另一種選擇可以在這里找到
最終答案可能如下所示:
every '30 1 * * 6' do
(($(date +'%V')&1)) && rake 'prj:task1', output: 'log/task1.log'
end
基本上每個星期六運行一次。 但是第一項檢查決定是否在偶數/奇數周上運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.