从bash运行Scrapy(shell脚本)

时间:2015-02-02 19:06:01

标签: java bash shell scrapy

我开发了一个Java的Web应用程序,它使用Scrapy来获取一些数据。为了实现这一点,我从Java调用了一个shell脚本:

 Process p = Runtime.getRuntime().exec("sh myPath/myScript.sh");
 p.waitFor();

包含

 #!/bin/bash

 cd mySpiderPath
 echo "We are going tu run scrapy"
 scrapy crawl mySpider
 echo "done!"

运行之后,两个“echo”都被打印,但scrapy什么也没做。如果我从shell运行myScript.sh它完美地工作......我很困惑!

我可以做些什么来尝试调试这种奇怪的行为?

修改

我已经将myScript.sh更改为运行python版本而不是scrapy命令,并且它不起作用...所以,结论是不是“scrapy问题”但是当它被调用时它是一个bash脚本问题来自Java ......任何想法? (如果我从shell执行myScript.sh它工作正常)

 #!/bin/bash

 cd mySpiderPath
 echo "We are going tu run scrapy"
 python --version
 echo "done!"

1 个答案:

答案 0 :(得分:0)

尝试更改:

Process p = Runtime.getRuntime().exec("sh myPath/myScript.sh");

为:

Process p = Runtime.getRuntime().exec("bash myPath/myScript.sh");

这可能会使用/bin/bash代替/bin/sh运行脚本,这通常指向更简单的shell。