0

我在Ubuntu 服务器上将每当我的 Rails 3.2 应用程序使用 gem。我有一个月度工作,我想在每个月的第一天运行,但它似乎没有用。

我知道代码有效,因为当我发现它没有运行时,我从服务器上的控制台运行它。我还有其他更频繁地运行(每小时、每天)的工作,但这个没有运行。有人可以帮我确定我做错了什么吗?

# 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
4

1 回答 1

0

看起来这是一个慢性解析问题。

这可能有效:

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 输出看起来是正确的。

于 2013-08-01T22:58:41.153 回答