【问题标题】:Cannot get whenever to run my rake task无法随时运行我的 rake 任务
【发布时间】:2014-07-27 06:26:57
【问题描述】:

我正在尝试让 whenever 运行我的 rake 任务,但它不起作用。

#Command Line
$ whenever -w
[write] crontab file written


#schedule.rb
every :year, :at => "2014-07-25 17:39:48 -0700" do
  rake 'timeperiod:create_timeperiod'
end

rake 命令将模型保存在 db 和 puts 文本中,所以我会知道它是否有效(当我运行 rake 时它会这样做)。我所做的在语法上是否有问题?

注意,schedule.rb 中的时间和日期是任意的,我在测试前一直将其更改为两分钟后。

【问题讨论】:

    标签: ruby-on-rails ruby cron whenever


    【解决方案1】:

    您的任务可能失败了,因为 cron 使用的 shell 与普通用户使用的不同。

    查看 crontab 的日志:

    grep CRON  /var/log/syslog
    

    【讨论】:

    • 你说得对,当我运行它时,我得到“没有这样的目录”。你知道我如何在这里同步 shell 吗?
    【解决方案2】:

    您为什么不验证您的命令是否已添加到 crontab 中?

    $ crontab -l
    

    您也可以手动添加作业。

    $ whenever
    * * * * * * bash -l 'cd /path/to/dir; rake your:task'
    
    $ crontab -e
    # add the cron job
    

    此外,cron 作业的输出不会输出到屏幕上;它会发送到您的邮件。检查你的邮箱。

    来自手册页:

    执行命令时,任何输出都会邮寄给 crontab(或在 MAILTO 环境变量中命名的用户) crontab(如果存在)。 cron 运行的子副本 这些进程的名称被强制为大写,如下所示 在 syslog 和 ps 输出中。

    【讨论】:

      【解决方案3】:

      对我来说,我正在使用命令,但我认为这不是最好的情况。说我的存储库在我的存储库中的 $HOME/www/virtualspirit 中。所以我的命令是 cd /www/virtualspirit && /$HOME/.rvm/rubies/ruby-2.1.2/bin/rake timeperiod:create_timeperiod RAILS_ENV=production

      在 crontab -e 中仔细检查它是否保存。

      【讨论】:

      • 我在crontab -e 之后的输出在这个粘贴中:pastie.org/9423365 可以这么说,命令已保存。
      • @EricBaldwin 这是开发还是生产?您的馅饼使用开发显示它,并且生成的命令我认为它是正确的,从您向我展示的命令中,您可以尝试在 $HOME 路径中使用 cd ~ && RAILS_ENV=development bundle exec rake timeperiod:create_timeperiod - -静音
      • 我认为它不会执行你的任务...试试看
      • 它正在开发中。我找到了答案,因为 Stack Overflow 的结构,我 15 个小时都接受不了
      【解决方案4】:

      这里有几个问题。

      1. 向任何时候添加 cron 作业的最佳方法是使用命令 whenever --update-crontab <name of identifier>
      2. 格式不正确。通过直接在 cron 中指定时间,我能够使其工作。

      例如:

      #schedule.rb
      every '13 15 26 7 *' do
        rake 'timeperiod:create_timeperiod'
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-19
        • 2012-09-02
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        • 1970-01-01
        • 2010-10-09
        相关资源
        最近更新 更多