public void runShell(String shell){
System.out.println(shell);
ProcessBuilder builder=new ProcessBuilder("/bin/sh","-c","/tempfile/test.sh"+shell);
builder.directory(new File("/tempfile/")); //切换到 /tempfile/ 工作目录下
int runningStatus = 0;
String s = null;
try {
Process pro=builder.start();
System.out.println("the shell script running");
try {
runningStatus=pro.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(runningStatus!=0){
System.out.println("脚本执行失败");
}else{
System.out.println("脚本执行成功");
}
System.out.println("11111111111");
}
processBuilder 里面的三个参数意思分别是:
- "/bin/sh" : Linux 用 /bin/sh 脚本解释器 执行脚本;如果是windows,则用 ”cmd.exe“。
- "-c":如果存在-c选项,则命令从字符串中读取。如果字符串后面有参数,则将它们分配给位置参数,从$0开始。
- "/tempfile/test.sh"+shell:脚本文件路径和 命令参数。
waitFor()
导致当前线程等待,如果必要,一直要等到由该 Process 对象表示的进程已经终止;返回运行状态。
推荐俩篇优质文章: