【问题标题】:crontab dont execute requirecrontab 不执行要求
【发布时间】:2016-12-17 12:11:03
【问题描述】:

我使用的是 osx,并在路径中创建了一个 ruby​​ 脚本:/Users/diogo/workspace/outros/crawler_trf,名称为 get_news.rb

所以我尝试使用以下行通过 crontab 执行它:*/1 * * * * 'ruby /Users/diogo/workspace/outros/crawler_trf/get_news.rb' > /tmp/crawler_trf.out,我得到了错误:/bin/sh: ruby /Users/diogo/workspace/outros/crawler_trf/get_news.rb: No such file or directory

经过一些搜索和此处的问题,我解决了删除引号的问题,现在我的 crontab 看起来像这样:*/1 * * * * cd /Users/diogo/workspace/outros/crawler_trf/ && ruby get_news.rb > /tmp/crawler_trf.out

但现在我遇到了一个新错误:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mail (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from get_news.rb:3:in `<main>'

我的文件开头是:

require 'nokogiri'
require 'open-uri'
require 'mail'

我的 ruby​​ 版本是 2.3.0,我在 .ruby-version 中指定了它,并使用 `.ruby-gemset 中指定的 gemset

我通过 bundle 安装了 gems

我真的寻找答案很久了,但我什么也没找到。

【问题讨论】:

  • 你是如何安装这些 gem 的?你有没有为他们运行gem install?或者,如果它们在项目的 Gemfile 中,请尝试使用 bundle exec ruby
  • 如果我执行 bundle 接收错误 /bin/sh: bundle: command not found 我将编辑我的帖子添加我的 ruby​​ 版本以及我如何安装 gems

标签: ruby macos crontab


【解决方案1】:

在 cron 中执行所有文件时,您应该始终完全指定所有文件的路径,因为 cron 提供的环境将与您的登录环境不同。这可能意味着将ruby 的调用替换为您的ruby 二进制文件的完整路径(可能是/usr/local/bin/ruby)。

尝试在 cron 之外运行 ruby -v 以查看您选择的版本。在我的 Mac OS 系统上,我有两个:

Edwards-MacBook-Air:~ emv$ /usr/bin/ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
Edwards-MacBook-Air:~ emv$ /usr/local/bin/ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]

一个来自操作系统,一个来自 Homebrew。

【讨论】:

  • 我没有找到/usr/local/bin/rubyruby -v 的响应是 ruby​​ 2.3.0p0(2015-12-25 修订版 53290)[x86_64-darwin14]
  • 我用which ruby 查找ruby 二进制文件并在/Users/diogo/.rvm/rubies/ruby-2.3.0/bin/ruby 中找到它我将crontab 更改为使用此路径执行,错误是相同的;(
  • 啊,你使用的是rvm。你看过rvm.io/integration/cron吗(使用带有cron的rvm)。它引用像这样调用包装器1 0 * * * /usr/local/rvm/wrappers/ruby-2.1.1@projectX/ruby /path/to/script.rb
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2011-10-14
  • 2020-03-16
  • 2013-04-19
  • 2020-05-30
  • 2017-09-07
相关资源
最近更新 更多