从JSP更改linux的PWD

时间:2013-03-12 12:40:18

标签: java linux jsp runtime.exec absolute-path

我需要从JSP执行linux命令。 它工作正常。 但是我需要通过JSP在linux的特定目录中启动一些sh文件。说/home/username/something/start.sh

try{
String command= "cd /home/username/something";

Runtime.getRuntime().exec(command);
Runtime.getRuntime().exec("./start.sh")


out.println("Child");
}
catch(Exception e)
{ out.println("Error");
}

它表示未找到FIle或目录。

我试过了Runtime.getRuntime().exec("pwd"),它显示了类似" java.lang.UNIXProcess@fc9d2b" ! :o

我需要更改pwd并通过jsp执行一些命令。我怎样才能做到这一点?? 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:7)

你不应该(实际上,似乎你不能)设置这样的工作目录。 Process给出的每个Runtime.exec()对象都有自己的工作目录。

正如How to use “cd” command using java runtime?中所回答的那样,您应该使用Runtime.exec()的三个参数版本,其中提供了File作为工作目录。来自javadoc

  

在具有指定环境和工作目录的单独进程中执行指定的命令和参数。

甚至更好,请使用ProcessBuilderProcessBuilder.directory()代替:

ProcessBuilder pb = new ProcessBuilder("start.sh");
pb.directory(new File("/home/username/something"));
Process p = pb.start();