【问题标题】:How to run Java programs over ssh?如何通过 ssh 运行 Java 程序?
【发布时间】:2012-04-21 07:01:56
【问题描述】:

假设我在 Eclipse 中创建了一个 Java 项目,它有 3-10 个类,其中一个有一个 main(String[] args) 方法,它启动整个程序并在命令行接受 4 个参数。假设这个项目在 src/lib 中有 6-10 个需要运行的 .jar 文件。

如果我可以通过 ssh 访问另一台计算机(两端都是 UNIX)并且我想运行这个程序,我该怎么做呢?

我问是因为我一直在做一些分布式计算项目,我需要在多台机器上运行我的程序,但我是一个完全的命令行菜鸟,我没有物理访问所有机器的权限。

编辑: 看来我需要对文件进行 SCP 处理。有人可以告诉我使 Java 程序运行的特定命令吗?包括我应该从哪个目录运行它以及如何包含 JAR 依赖项。

【问题讨论】:

    标签: java unix ssh terminal distributed-computing


    【解决方案1】:

    通常,您使用 ssh 登录到远程计算机,然后使用该计算机的资源从该计算机的存储运行程序。

    因此,如果您想在另一台机器上运行您的 Java 程序,您需要将所需的文件复制到那里,然后 ssh 到该机器并从远程命令行运行该程序。

    【讨论】:

      【解决方案2】:

      您编写了一个小型引导程序,它将成为您的 MicroKernel。你 SCP 那个 MicroKernel 到远程机器。该程序将使用自定义 ClassLoader 将您的实际应用程序的其余依赖项拉入内存或远程机器的某些存储中。查看 URL ClassLoader 以获得一些帮助,因为它可以从 HTTP 地址加载 JAR 文件。

      或者你可以压缩你的整个程序,将它SCP到远程机器上,解压缩然后像往常一样运行'java'。如果您有 SSH 访问权限,您应该可以访问该机器上的 scp 文件。如果不是,您可以随时通过 SSH 连接到删除机器,然后将它们从您的机器中 scp

      例子:

      ssh myname@myremotemachine
      > mkdir /location/to/program
      > scp myname@mydevmachine:/location/to/program/* /location/to/program
      

      如果您正确设置了 SSH 密钥并且无需输入密码,这一切都会非常有效。

      【讨论】:

        【解决方案3】:

        运行

        java -jar thejarfile.jar "arg1" "arg2" "ectect.."

        如果你想在后台运行它java -jar thejarfile.jar "arg1" "arg2" &

        如果它在后台杀死它 ps -aux 获取 id 然后 kill (id number)

        【讨论】:

          猜你喜欢
          • 2012-11-08
          • 1970-01-01
          • 2013-02-15
          • 2015-02-14
          • 2016-02-07
          • 1970-01-01
          • 2014-05-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多