Java进程停留在getRuntime()。exec()

时间:2018-05-17 15:44:45

标签: java spring spring-mvc

我编写了一个简单的程序,使用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盒子上做所有事情 有谁知道问题出在哪里?

0 个答案:

没有答案