【问题标题】:Cron job can't get it to run, What syntax to use for the crontab?cron 作业无法运行,crontab 使用什么语法?
【发布时间】:2011-08-16 11:39:27
【问题描述】:

我正在尝试使用 CRON 运行 rails 作业。我找到的所有示例都将我引向其他 Rails 工具、插件、gem 等,这很好,但我真的只想使用 CRON,无论如何。我可以通过以下方式正常运行我的工作,但是当我尝试 cron 时,我没有任何运气(只是似乎没有做任何事情)。我想每 3 分钟运行一次(用于测试)。

/usr/bin/env ruby ~/Dropbox/98_2011/webs/apps238/swapper/script/runner /home/durrantm/Dropbox/98_2011/webs/apps238/swapper/app/controllers/scheduled_emails_controller.rb

我在 Linux Ubuntu 上。

我的路径有:

/var/lib/gems/1.8/bin:/home/durrantm/.rvm/gems/ruby-1.8.7-p302/bin:/home/durrantm/.rvm/gems/ruby-1.8.7-p302@global/bin:/home/durrantm/.rvm/rubies/ruby-1.8.7-p302/bin:/home/durrantm/.rvm/bin:/home/durrantm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/pgsql/bin

【问题讨论】:

  • 如果你运行的是最新版本的 Ubuntu,你可能会遇到新贵的好运。
  • 嗨,克里斯,谢谢你的建议。这些天在大多数Linux上都可用吗?我应该解释一下,一旦我让它在我的盒子上运行,我的 ISP 就是下一个,我不知道他们是否会拥有它。我在我的 shell 中做了“man upstart”,但与我的本地(Ubuntu)盒子不同。
  • Upstart 自 6.10 以来一直在 Ubuntu 中,自版本 9 IIRC 以来的 Fedora,SuSE 有它,不确定其他人 - 你可能想谷歌它。我知道像 Palm 的 WebOS 之类的东西也使用它。

标签: ruby-on-rails ruby ubuntu cron


【解决方案1】:

1- 您可能没有权限。尝试以 root 身份运行 crontab -e

2- 为什么不写入日志文件来调试问题:

*/3 * * * * /your/command/here >> /path/to/logfile

【讨论】:

  • 非常感谢 Anas :) 我试过了,但不幸的是没有给出任何输出 * * * * * bash --login -c /usr/bin/env ruby​​ /home/durrantm/Dropbox/98_2011/ webs/apps238/swapper/script/runner /home/durrantm/Dropbox/98_2011/webs/apps238/swapper/app/controllers/scheduled_emails_controller.rb >> /home/durrantm # JOB_ID_1
【解决方案2】:

Cron 作业不会加载用户的环境。尝试在 crontab 或您需要的任何环境中的命令之前添加 RAILS_ENV=production。

例子:

RAILS_ENV=production
*/3 * * * * /your/command/here

或者,如果您想确保您拥有用户的完整环境,请在登录 shell 中执行命令:

*/3 * * * * bash --login -c '/your/command/here'

【讨论】:

  • 我是否只是将该行放在实际的 crontab 文件中 * * * * 等...行之前?
  • 我尝试了第一个,但没有帮助,我仍然得到“无法加载捆绑器 gem。使用gem install bundler 安装它我尝试了第二个(包括登录shell)和itran(关于我的环境变量的大量输出)。但似乎仍然没有真正运行这项工作,只是没有错误。 ?
  • 尝试在作业之后添加重定向以捕获所有输出,在命令后面但在引号内:'/your/command > /tmp/cron.log 2>&1',并检查是否有错误.
  • 我试过 bash --login -c /usr/bin/env ruby​​ '/home/durrantm/Dropbox/98_2011/webs/apps238/swapper/script/runner /home/durrantm/Dropbox/98_2011 /webs/apps238/swapper/app/controllers/scheduled_emails_controller.rb > /tmp/cron.log 2> &1'
  • 我得到了很多环境变量信息,但没有错误的消息,如果我从命令行运行它,工作(发送电子邮件)不会做它所做的事情(发送电子邮件)。跨度>
【解决方案3】:

去掉主目录扩展字符(将 ~ 替换为 /home/user/etc/etc),你应该状态良好(很可能 cron 的 ~ 扩展与你的用户不匹配)。

如果语法的其他部分很麻烦,那么有一个简单的 gui。

http://gnome-schedule.sourceforge.net/

sudo apt-get install gnome-schedule

您仍然需要修复 rb 文件的路径。

【讨论】:

  • 很好,。我也刚刚意识到这一点并改变了它。还没有运气,但我会检查您提供的链接的更多信息。谢谢。迈克尔。
  • 我使用了 GNOME gui(很棒的工具)并从那里运行了一次并且能够看到:/home/durrantm/Dropbox/98_2011/webs/apps238/swapper/config/../config /preinitializer.rb:5:无法加载捆绑器 gem。使用gem install bundler 安装它。 (RuntimeError) 你知道如何克服吗?似乎仍然无法正确找到我的环境?
猜你喜欢
  • 2018-06-01
  • 1970-01-01
  • 2015-09-20
  • 2014-02-02
  • 2018-02-25
  • 2014-04-04
  • 1970-01-01
  • 2011-11-17
  • 2016-08-21
相关资源
最近更新 更多