收集 Linux 命令输出
我现在在一台Linux机器上。我有一个Java程序,它将运行一些linux命令,例如,,或。ps
top
list
free -m
在 Java 中运行命令的方法如下:
Process p = Runtime.getRuntime().exec("free -m");
如何收集Java程序的输出?我需要处理输出中的数据。
我现在在一台Linux机器上。我有一个Java程序,它将运行一些linux命令,例如,,或。ps
top
list
free -m
在 Java 中运行命令的方法如下:
Process p = Runtime.getRuntime().exec("free -m");
如何收集Java程序的输出?我需要处理输出中的数据。
使用 Process.getInputStream()
获取表示新创建的进程的标准输出的 InputStream
。
请注意,从Java启动/运行外部进程可能非常棘手,并且有很多陷阱。
这篇优秀的文章描述了它们,其中还描述了围绕它们的方法。
要收集输出,您可以执行类似操作
Process p = Runtime.getRuntime().exec("my terminal command");
p.waitFor();
BufferedReader buf = new BufferedReader(new InputStreamReader(
p.getInputStream()));
String line = "";
String output = "";
while ((line = buf.readLine()) != null) {
output += line + "\n";
}
System.out.println(output);
这将运行脚本,然后将脚本中的输出收集到变量中。Joachim Sauer答案中的链接还有其他这样做的例子。