我不确定为什么是这样,但是我在服务器上安装了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
的情况下运行可执行文件,只需使用其绝对路径即可。绝对路径以/
开头。
- 在
bash
中运行which phantomjs
。这将显示phantomjs
的绝对路径。 - 在您的脚本中,用其绝对路径替换
phantomjs
。