我在Ubuntu服务器上使用Whenever gem和我的Rails 3.2应用程序。我有一个月工作,我想在每个月的第一天运行,但它似乎没有用。
我知道代码有效,因为当我发现它没有运行时,我从服务器上的控制台运行它。我有其他工作更频繁(每小时,每天),但这一个没有运行。有人可以帮我确定我做错了吗?
# schedule.rb
every 1.month, :at => "beginning of the month at 3am" do
rake "users:update_monthly"
end
# lib/schedule.rake
namespace :users do
task :update_monthly => :environment do
User.update_monthly
end
end
当我在服务器上运行crontab -l
时:
# Begin Whenever generated tasks for: whenever_schedule
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/articles
0 3 1 * * /bin/bash -l -c 'cd /var/deploy/foo/web_head/releases/20130801200106 && RAILS_ENV=production bundle exec rake users:update_monthly --silent'
# End Whenever generated tasks for: whenever_schedule
答案 0 :(得分:0)
看起来这是一个慢性解析问题。我这两篇博文可能会帮助您解决问题: http://bjhess.com/blog/ruby_whenever_and_day_of_month_crontab_syntax_/ https://github.com/javan/whenever/issues/13
这可能有效:
every 1.month, :at => 'January 1st 3:00am' do
rake "users:update_monthly"
end
或者这个:
every 1.month, :at => 'start of the month at 9am' do
rake "users:update_monthly"
end
这很难,因为看起来服务器上的crontab输出看起来是正确的。