【问题标题】:How to write a java program to start a program in a remote machine?如何编写java程序在远程机器上启动程序?
【发布时间】:2015-08-10 20:53:25
【问题描述】:

我在同一个网络上的 3 台 Windows 机器上运行 3 个网络爬虫(Java 程序)实例。

我想编写一个主 java 程序来监控所有 3 个网络爬虫程序,如果任何程序被终止,然后它会重新启动该特定程序。

我能够将客户端机器上的 java 程序绑定到一个套接字并从服务器监视该套接字,但是如果程序终止,我不知道如何重新启动程序。 我什至没有丝毫的想法,我应该如何实现这一目标。任何指导表示赞赏。

如何远程重启客户端应用程序?

【问题讨论】:

  • 你想在这里实现什么?你要编写某种恶意软件吗?
  • [添加 JVM 关闭挂钩][1] 并作为新进程重新启动您的程序。 [1]:stackoverflow.com/questions/9317461/…
  • 我认为这个问题太宽泛了。您可以使用某种监督者(由您或第三方编写,例如stackoverflow.com/questions/7629813/…)在本地监控进程并在需要时重新启动它们。您可以使其远程访问(服务器、消息传递)。在任何情况下,您都需要一些您想要启动的 Java 进程之外的东西。另一种选择是远程在命令行中运行命令。查看如何在 Windows 上执行此操作,很可能您必须启用协议或安装软件(SSH 只是一种选择)。
  • @BinkanSalaryman 如果进程只是挂起或意外死亡,则不会触发挂钩。它只会在虚拟机或多或少按计划退出时启动。
  • 我在 linux 上使用 SSH 客户端以编程方式连接到服务器并在从属服务器上重新启动程序,这可能值得看看一些 windows SSH 服务器。

标签: java sockets networking cmd


【解决方案1】:

显然,您需要远程服务器上的另一个组件来运行死掉的 Java 应用程序。

您可以在发现远程爬虫死机时利用 PsExec 运行远程爬虫。

https://technet.microsoft.com/de-de/sysinternals/bb897553.aspx

tasklist 命令可以列出远程机器上的任务,因此您可以创建自己的“nagios”-very-light-edition。

tasklist /S computer 应该列出远程系统“计算机”上的任务。

如果这是一个严肃的、专业销售的、不仅是内部解决方案,您需要为远程任务投资一个控制程序,并可能决定在应用服务器或类似运行时内运行爬虫。通过这种方式,您可以更好地控制当前运行的版本等。更新的分发将更加容易,您可以使用众所周知的监控系统来远程检查爬虫的状态。

【讨论】:

    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 2019-02-12
    • 2013-09-18
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    相关资源
    最近更新 更多