2

我需要从 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");
}

它说找不到文件或目录。

我试过Runtime.getRuntime().exec("pwd")了,它显示类似“java.lang.UNIXProcess@fc9d2b”的东西!:O

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

4

1 回答 1

7

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

正如如何使用 java 运行时使用“cd”命令?,您应该使用 的三个参数版本Runtime.exec(),您在其中提供一个File将作为工作目录的版本。从它的javadoc

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

或者更好的是,使用ProcessBuilderwithProcessBuilder.directory()代替:

ProcessBuilder pb = new ProcessBuilder("start.sh");
pb.directory(new File("/home/username/something"));
Process p = pb.start();
于 2013-03-12T12:59:17.407 回答