【问题标题】:Java Runtime.exec() with ssh on Linux IssuesJava Runtime.exec() 与 Linux 上的 ssh 问题
【发布时间】:2012-04-25 18:41:17
【问题描述】:

我正在尝试使用 Runtime.exec() 启动一个新进程,但我的问题在于使用 ssh 远程进入,然后在那里运行一个 java 程序。代码:

test = "ssh -t username@host java packageName.ClassName portNumber (Other command line args for this class)"
Process proc = Runtime.getRuntime().exec(new String[] {"/bin/bash", "-c", test});

这不会失败或捕获,但我需要能够看到新运行进程的标准输出,但我没有。

注意:如果我从命令行运行ssh -t username@host java packageName.ClassName portNumber (Other command line args for this class),它可以正常工作。我使用 ssh 密钥将主机设置为不需要密码。

有什么想法吗?

【问题讨论】:

    标签: java linux ssh runtime.exec


    【解决方案1】:

    您需要使用Process.getInputStream 来获取正在创建的子流程的输出。

    请参阅this article,了解有关Runtime.exec 的良好讨论。

    【讨论】:

      【解决方案2】:

      我认为您可以请求与进程的标准输出相对应的输入流,然后将其打印到标准输出上。如果您需要在执行后查看它,只需在进程上调用waitFor() 方法,以便在您开始打印之前完成。

      【讨论】:

        【解决方案3】:

        使用getInputStream() 访问返回进程的标准输出。您还可以使用ProcessBuilder.Redirect提供的设施。

        【讨论】:

          猜你喜欢
          • 2011-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-01
          • 1970-01-01
          • 2021-06-05
          • 2021-09-10
          • 2021-09-13
          相关资源
          最近更新 更多