Ruby 脚本只有在从 cronjob 运行时才能找到 phantomjs(ubuntu 14.04)



我不确定为什么是这样,但是我在服务器上安装了phantomjs

$which phantomjs
/usr/local/bin/phantomjs

并正在运行来自crontab的脚本为:

0 */5 * * * /home/roy/.rbenv/shims/ruby /home/roy/SCRIPT/lib/SCRIPT.rb

如果我只是从命令行中运行确切的命令,它将运行。

但是,如果它从cronjob运行,我得到:

/home/roy/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/cliver-0.3.2/lib/cliver/dependency.rb:143:in 
`raise_not_found!': Could not find an executable ["phantomjs"] on your path. (Cliver::Dependency::NotFound)

我已经看到了这一点,可能无法找到phantomjs,但是即使安装了,它似乎仍然无法从Cron起作用。

有什么办法检查可能出错的地方?只是为了背景,这一直在工作大约一个月,但是当我尝试从phantomjs 2.0.0更新到phantomjs 2.1.1。

问题

运行可执行文件的可执行文件 $PATH时,请搜索该可执行文件。

例如,如果您的$PATH包含/bin,则可以运行phantomjs,并且将搜索/bin以查找/bin/phantomjs

从Cron运行脚本时,$PATH包含与从bash运行该脚本的目录不同的目录。

解决方案

在不依赖$PATH的情况下运行可执行文件,只需使用其绝对路径即可。绝对路径以/开头。

  1. bash中运行which phantomjs。这将显示phantomjs的绝对路径。
  2. 在您的脚本中,用其绝对路径替换phantomjs

最新更新