我想让whenever
运行我的佣金任务,但它不起作用。
#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
中的时间和日期是任意的,我会在测试之前将其更改为两分钟。
答案 0 :(得分:1)
您的任务可能失败,因为cron使用的shell与普通用户使用的shell不同。
检查crontab的日志:
grep CRON /var/log/syslog
答案 1 :(得分:0)
为什么不验证您的命令是否已添加到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输出中。
答案 2 :(得分:0)
对我来说,我使用命令,但我认为这不是最好的情况。说我的仓库在$ HOME / www / virtualspirit中,在我的存储库中。所以我的随便命令将是cd / www / virtualspirit&& /$HOME/.rvm/rubies/ruby-2.1.2/bin/rake timeperiod:create_timeperiod RAILS_ENV = production
在crontab -e中仔细检查并查看是否已保存。
答案 3 :(得分:-1)
这里有几个问题。
whenever --update-crontab <name of identifier>
例如:
#schedule.rb
every '13 15 26 7 *' do
rake 'timeperiod:create_timeperiod'
end