我开发了一个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!"
答案 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。