我正在尝试在我的 rails 应用程序中实现 cron 作业,并且对 crons 完全陌生。我正在使用rails 3 中的 gem。
这些是我已经完成的步骤:
在 Gemfile
gem 'whenever', :require => false
然后跑了,
wheneverize .
这就是我的 config/schedule.rb 的样子:
set :environment, :development
set :path, "/home/pc/Workspace/pep1"
every 1.minutes do
runner "Demo.update_time_slot"
command "rm -rf /tmp/cache"
end
我的演示模型包含:
class << self
def update_time_slot
.......
end
end
在终端上,我运行了命令,
whenever --update-crontab pep1
whenever -i
但似乎,cron 文件没有被执行。但是当我在 Rails 控制台上执行 Demo.update_time_slot 时,它工作正常。
crontab -l 的输出是:
# Begin Whenever generated tasks for: pep1
* * * * * /bin/bash -l -c 'cd /home/pc/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\'''
* * * * * /bin/bash -l -c 'rm -rf /tmp/cache'
# End Whenever generated tasks for: pep1
# Begin Whenever generated tasks for: /home/pc/Workspace/pep1/config/schedule.rb
* * * * * /bin/bash -l -c 'cd /home/pc/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\'''
* * * * * /bin/bash -l -c 'rm -rf /tmp/cache'
# End Whenever generated tasks for: /home/pc/Workspace/pep1/config/schedule.rb
“grep CRON /var/log/syslog”的输出是:
Oct 12 22:37:01 IdeaPad-S400 CRON[10845]: (pc) CMD (/bin/bash -l -c 'rm -rf /tmp/cache')
Oct 12 22:37:01 IdeaPad-S400 CRON[10846]: (pc) CMD (/bin/bash -l -c 'cd /home/mona/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\''')
Oct 12 22:37:01 IdeaPad-S400 CRON[10847]: (pc) CMD (/bin/bash -l -c 'cd /home/mona/Workspace/pep1 && script/rails runner -e development '\''Demo.update_time_slot'\''')
Oct 12 22:37:01 IdeaPad-S400 CRON[10852]: (pc) CMD (/bin/bash -l -c 'rm -rf /tmp/cache')
我不知道哪里出了问题。有人可以帮我解决这个问题吗?
会很感激的。
谢谢。