inputStream = Runtime.getRuntime().exec(cmd);
java的这个方式,得到的是控制台的输出流,
也就是linux命令运行完,显示在屏幕上的东西,都以流的方式传递给java了,
可以通过下边的方式
InputStreamReader insr = new InputStreamReader(inputStream, “GBK”);
BufferedReader br = new BufferedReader(insr);
while (br.ready()) {
String line = br.readLine();
}
得到屏幕上显示的一行行内容,解析得到你想要的结果。
InputStreamReader 最后一个参数,是设置显示流是什么字符集的,如果不正确,请自行调整一下。
因为有shell pipe。看这个例子:
String[] cmd = {
"/bin/sh",
"-c",
"ls /etc | grep release"
};
Process p = Runtime.getRuntime().exec(cmd);
管道命令是通过/bin/sh 解析的,java exec用的是系统exec函数族,所以就按照上面那个执行方法就好了