// 执行linux命令方法
private boolean excuteLiuxOrde3r(String command) {
logger.info("执行命令:" + command);
boolean returnFlag = false;
StringBuilder sb = new StringBuilder();
Process process= null;
try {
process = Runtime.getRuntime().exec(command);
returnFlag = true;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String lo;
while ((lo = bufferedReader.readLine()) != null) {
sb.append(lo);
sb.append("\n");
}
logger.info("执行命令结果:" + sb.toString());
process.waitFor();
// 等待n秒后destory进程
}catch (Exception e){
e.printStackTrace();
}
process.destroy();
return returnFlag;
}
我正常输入传入命令:wc -l [filename]
结果应该打印:
执行命令结果:35653232 filename
但是经过测试并不能!请问下给大神这是为嘛?
参考我的代码 改一下
public static void exec(String sh){
InputStream in = null;
try {
Process pro = Runtime.getRuntime().exec(new String[]{
"sh",
"-c",
sh
});
in = pro.getInputStream();
BufferedReader read = new BufferedReader(new InputStreamReader(in));
String result = null;
System.out.println("sh---"+sh+"----start");
while((result = read.readLine()) != null){
System.out.println("INFO:"+result);
}
read = new BufferedReader(new InputStreamReader(pro.getErrorStream()));;
result = null;
while((result = read.readLine()) != null){
System.out.println("ERROR:"+result);
}
System.out.println("ip---"+sh+"----end");
in.close();
pro.getErrorStream().close();
} catch (Exception e) {
//e.printStackTrace();
}
}
应该是 process = Runtime.getRuntime().exec(command); process.waitFor(); 这两行挨着 这个是有返回值的 把返回值打印出来 如果是0 应该执行是正常