收集 Linux 命令输出

2022-09-04 01:26:44

我现在在一台Linux机器上。我有一个Java程序,它将运行一些linux命令,例如,,或。pstoplistfree -m

在 Java 中运行命令的方法如下:

Process p = Runtime.getRuntime().exec("free -m");

如何收集Java程序的输出?我需要处理输出中的数据。


答案 1

使用 Process.getInputStream() 获取表示新创建的进程的标准输出的 InputStream

请注意,从Java启动/运行外部进程可能非常棘手,并且有很多陷阱。

这篇优秀的文章描述了它们,其中还描述了围绕它们的方法。


答案 2

要收集输出,您可以执行类似操作

 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答案中的链接还有其他这样做的例子。


推荐