Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅使用cron:/usr/bin/env:ruby\u executable\u hooks:没有这样的文件或目录_Ruby_Perl_Cron - Fatal编程技术网

仅使用cron:/usr/bin/env:ruby\u executable\u hooks:没有这样的文件或目录

仅使用cron:/usr/bin/env:ruby\u executable\u hooks:没有这样的文件或目录,ruby,perl,cron,Ruby,Perl,Cron,我有一个perl脚本,它使用system()调用shell命令,该命令使用ruby_可执行_挂钩 当我从命令行运行这个脚本时,它会完美地执行 但是,当它从cron作业运行时,会出现以下两个错误之一: A) 如果我没有chdir()即工作目录为/home/foobar /usr/bin/env: ruby_executable_hooks: No such file or directory B) 如果I chdir(“[doc root]/cgi bin”) 从cron运行时找不到某些文件的原

我有一个perl脚本,它使用system()调用shell命令,该命令使用ruby_可执行_挂钩

当我从命令行运行这个脚本时,它会完美地执行

但是,当它从cron作业运行时,会出现以下两个错误之一: A) 如果我没有chdir()即工作目录为/home/foobar

/usr/bin/env: ruby_executable_hooks: No such file or directory
B) 如果I chdir(“[doc root]/cgi bin”)


从cron运行时找不到某些文件的原因可能是什么?

这几乎肯定是环境变量的问题。从cron运行某些东西时,您的
.bashrc
没有激活,因此可能设置的环境变量,例如指向哪个ruby版本以及路径的外观可能会有所不同

如何解决这一问题将取决于您的环境以及选择ruby版本时可能使用的工具(rvm、chruby、rbenv等)

您可能需要使用类似于
which ruby
的方法来确定要执行什么ruby,并在您的crontab中使用它。

我在这里找到了答案:

具体来说,我只是将“$HOME/.profile;”放在cron命令前面,如下所示:

0.5***$主页/.profile/路径/到/命令/到/运行


谢谢大家让我走上正轨。

我不太清楚这是为什么,但如果有人在MacOS上使用RVM,这对我来说是有效的。我正在使用一个名为
backup
的gem运行数据库备份。我不得不把宝石放在我的应用程序的gem文件中。不确定为什么我必须将cd刻录到应用程序目录


***source/Users/john/.rvm/environments/ruby-2.7.1;cd/path/to/app&&bundle exec backup perform-t mybackup

刚刚发布之后,我注意到/usr/lib/ruby/site\u ruby/1.8正在被引用,而twurl在1.9.3下运行,1.9.3是默认版本。我对ruby了解不够,不知道这是否是一个问题,也不知道如何解决它。你是说
$ENV{PATH}
包含
ruby\u可执行钩子的路径
?那么这可能是一个权限问题。
cron
执行环境通常不是人们想象的那样。如果您运行的脚本仅仅是
id;pwd;env | sort
两者(a)交互,以及(b)在cron下?你看到意义的不同了吗?谢谢Carl,ikegami和pilcrow。命令行的输出太长,无法在此处显示。我将缩短它,并把它放在一个单独的评论。下面是cron作业的输出:HOME=/HOME/username LANG=C LOGNAME=username MAILTO=cron@servername.comPATH=/usr/bin:/bin PWD=/home/username SHELL=/bin/bash SHLVL=1 USER=username=/usr/bin/env这里是命令行的一个非常截断的输出。我已经删除了不相关的东西和路径,在下一篇评论中。CLASSPATH=.:/usr/local/jdk/lib/classes.zip GEM_HOME=/HOME/username/.rvm/gems/ruby-1.9.3-p551 GEM_PATH=/HOME/username/.rvm/gems/ruby-1.9.3-p551:/HOME/username/.rvm/gems/r‌​uby-1.9.3-p551@globalIRBRC=/home/username/.rvm/rubies/ruby-1.9.3-p551/.IRBRC MY_ruby\u home=/home/username/.rvm/rubies/ruby-1.9.3-p551 ruby\u VERSION=ruby-1.9.3-p551 rvm\u bin\u path=/home/username/bin rvm\u path=/home/username/.rvm\u前缀=/home/username/rvm\u VERSION=1.26.11(最新)OMG非常感谢您!将近15个小时试图解决这个问题,现在已经解决了。谢谢,谢谢
/usr/lib/ruby/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem twurl (>= 0) (Gem::LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `gem'
from /home/foobar/.rvm/gems/ruby-1.9.3-p551/bin/twurl:22
from /home/foobar/.rvm/rubies/ruby-1.9.3-p551/lib/ruby/gems/1.9.1/bin/ruby_executable_hooks:15