java提供的运行命令行工具类是process,基本用法如下:
代码块
String command ="ps -ef |grep abcd" + " |grep 'abc'";
ProcessBuilder p = new ProcessBuilder(command .split("\\s"));
p.redirectErrorStream(true);
Process process = p.start();
try (BufferedReader r = new BufferedReader(new InputStreamReader(process .getInputStream()));) {
String logLine;
while ((logLine = r.readLine()) != null) {
System.out.println(logLine + "\n");
}
process .waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
一般情况下,以上代码可以正常运行,但是要注意command 中的空格,当command .split(“\s”)方法返回的string[] 数组中有多余的空字符串,这样就不会正确执行。
例如 string command = “ps -ef |grep abcd”
上面的命令中grep 和 abcd中间有3个空格,command .split(“\s”)返回值就会有多余的空字符串,就不会正确执行命令。