【问题标题】:Cronjob is running every hour but not at a specific timeCronjob 每小时运行一次,但不是在特定时间运行
【发布时间】:2016-04-27 12:03:46
【问题描述】:

我的服务器上有一个 cronjob,假设每天在特定时间(例如上午 8 点)在我的 rails 应用程序上运行一个 rake 脚本。我每次使用 gem 来自动执行此操作。这是它当前在 cron 文件中的显示方式:

0 8 * * * /bin/bash -l -c 'cd /home/deploy/apps/myapp/releases/20160121092339 && RAILS_ENV=production bundle exec rake overdue_payments --silent >> /home/deploy/apps/myapp/releases/20160121092339/log/cron.log 2>&1'

而且它不起作用。但奇怪的是,如果我将我的 cron 编辑为每小时运行一次,它工作得很好!以下是我如何让它每小时运行一次:

0 * * * * /bin/bash -l -c 'cd /home/deploy/apps/myapp/releases/20160121092339 && RAILS_ENV=production bundle exec rake overdue_payments --silent >> /home/deploy/apps/myapp/releases/20160121092339/log/cron.log 2>&1'

我已将我的时区修改为当地时区(英国),但仍然无法正常工作:

【问题讨论】:

  • 在红色划线处哈哈大笑!

标签: ruby-on-rails linux cron


【解决方案1】:

我们需要为 cronjob 描述指定时区。这是我的例子:

test_cron_job:
  cron: "45 11 * * * Asia/Bangkok"
  class: "Schedulers::TestCronJob"
  queue: default

以上 cronjob 将在曼谷时间上午 11:45 运行。顺便说一句,您可以通过以下方式找到您的时区:

ActiveSupport::TimeZone.zones_map.values.map(&:tzinfo).map(&:identifier)

【讨论】:

  • 嘿伙计,我应该这样写吗?:0 8 * * * Europe/London /bin/bash -l -c 'cd /home/deploy/apps/myapp/ release/20160121092339 && RAILS_ENV=production bundle exec rake overdue_payments --silent >> /home/deploy/apps/myapp/releases/20160121092339/log/cron.log 2>&1'
  • 0 8 * * * Europe/London 是正确的,让我们用测试 cronjob 试试吧
  • 好的,告诉我!因为我试过了,它没有用:(
  • 是的,我确实做到了..不管我什么时候输入,它仍然没有工作..
【解决方案2】:

我终于解决了!对于时区,我只需要在它之前添加 TZ 。所以就我而言,它将是:TZ="Europe/London"。

0 8 * * * TZ="Europe/London" /bin/bash -l -c 'cd /home/deploy/apps/myapp/releases/20160121092339 && RAILS_ENV=production bundle exec rake overdue_payments --silent >> /home/deploy/apps/myapp/releases/20160121092339/log/cron.log 2>&1'

【讨论】:

    【解决方案3】:

    希望此解决方案对您有所帮助

    every :day, :at => (6..8).to_a.map { |x| ["#{x}:00","#{x}:30", "#{x+1}:00"] }.flatten do
    # Run rake task.
    end
    
    # => ["6:00", "6:30", "7:00", "7:00", "7:30", "8:00", "8:00", "8:30", "9:00"]
    

    调整初始范围和内部块以覆盖任何范围。支持24小时制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 2013-08-01
      相关资源
      最近更新 更多