我编写了一个简单的程序,使用java进程在Ubuntu框中运行shell脚本。手动执行时,脚本通常需要大约3分钟才能完成。所以,为了解决这个问题,我在函数process.waitFor(4, TimeUnit.MINUTES);
中给了1分钟。现在,问题是当我手动编译和运行代码时代码工作得很好,但是当我使用相同的代码时一个spring mvc项目,它被卡在getRuntime().exec("bash /home/username/script.sh");
它没有抛出任何错误。我正在我的控制器中直接运行该程序。我被困在它,因为我需要在成功运行此脚本后再运行一个脚本。以下是我的完整代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.concurrent.TimeUnit;
public class Test{
public static void main(String[] args){
try{
StringBuffer output = new StringBuffer();
Process p;
System.out.println("Before Runtime");
p = Runtime.getRuntime().exec("bash /home/username/script.sh");
System.out.println("After Runtime.exec");
p.waitFor(4, TimeUnit.MINUTES);
System.out.println("After p.waitFor()");
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader errReader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = "";
while ((line = errReader.readLine()) != null) {
output.append(line + "\n");
System.out.println("ErrorLine: "+ line);
}
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
System.out.println(line);
}
}catch(IOException | InterruptedException e){
System.out.println("Error: "+e.getMessage());
}
}
}
我正在ubuntu盒子上做所有事情 有谁知道问题出在哪里?