【问题标题】:How to view a runnable .jar's output via SSH client如何通过 SSH 客户端查看可运行 .jar 的输出
【发布时间】:2014-02-01 01:06:56
【问题描述】:

我的服务器上运行了一个 .jar 可运行文件。当我在本地运行文件时,我可以通过我的 IDE 看到它的输出。同样,我可以通过 SSH 连接并运行文件并查看输出,但是当我关闭会话时,JAR 会退出。

有什么方法可以让我的应用程序持续运行,然后使用 SSH 等终端服务访问 java 应用程序输出,而无需停止/启动应用程序。

任何帮助将不胜感激。

【问题讨论】:

  • 自从我提出问题后,我就发现了 TMUX。我强烈推荐给任何想要运行 Java 控制台应用程序的远程会话的人。

标签: java unix ssh terminal putty


【解决方案1】:

您可以使用screennohup

发生的情况是,当您关闭 SSH 会话时,程序会挂断电话。

您可以使用 nohup。 Nohup 代表“不挂断”

nohup java -jar myJar.jar > outputFile.txt

这将在后台运行程序并将所有输出发送到outputFile.txt。当您结束会话时,它将继续运行。你必须使用kill 命令来杀死它。

第二个选项是您可以使用screen,它实际上创建了一个可分离的“幽灵会话”。当您运行 screen 时,您似乎处于不同的 ssh 会话中。然后,当您从屏幕分离时,这些过程会在后台继续进行。当您退出 ssh 会话时,屏幕会继续运行。 您只需 ssh 回到服务器,然后重新连接到您的屏幕会话,就像魔术一样,您的程序仍然在运行所有相关的输出。简单阅读一下手册页应该会让您了解如何执行此操作。

man screen

最后,我决定添加第三个选项,不是因为它可行,而只是为了让您了解它是一个选项。 (有些人会声称这是唯一真正的选择,因为这是您应该做的。坦率地说,我不在乎,并认为您应该做最容易实现目标的任何事情。)

您还可以编辑您的程序以接收挂断信号。然后程序将始终在后台运行。然后你可以使用

java -jar myJar.jar & > outputFile.com

& 告诉命令启动一个新进程(也就是在后台运行),> 将输出发送到文件。这就是像 tomcat 或 spring boot 这样的普通服务器应用程序的工作方式。他们只是吞下了挂断电话。

【讨论】:

  • 完美答案。这正是我一直在寻找的。 10 出 10 :-)
  • 很高兴能帮上忙 :)
猜你喜欢
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多