【问题标题】:Process running on EC2 instance stops when get disconnected from EC2与 EC2 断开连接时,在 EC2 实例上运行的进程停止
【发布时间】:2021-01-27 00:34:37
【问题描述】:

我在 EC2 实例上运行 Java CLI 实用工具。它执行一些过程,并将结果写入控制台和日志文件。我正在使用以下命令运行它:

java -jar <jar_file_name> |& tee output_file.txt

这个过程应该运行几天。但是当我从 EC2 实例断开连接(SSH 会话关闭)时,该过程停止。即使断开连接,如何使进程运行? (或关闭我的本地机器)

【问题讨论】:

  • SO 可能不是一个很好的资源。您需要像screen(如答案中所述)或tmux 这样的工具。您还可以将nohup 与进程管理一起使用以在后台运行进程,即使在断开连接时也是如此。此外,如果您失去 SSH 连接,mosh 之类的工具可能会有所帮助。如果要经常运行,您也可以考虑cron。或以上所有内容的某种组合。

标签: java amazon-web-services amazon-ec2 jar process


【解决方案1】:

您正在寻找的是Screen 命令。这允许您创建一个虚拟的、分离的终端会话,即使您的 SSH 连接关闭,它也会保留。屏幕的进程继续在后台优雅地执行。

(屏幕并非预装在所有系统上。有关安装说明,请参阅您的发行版文档)。

创建新会话:

screen -S java_session

(在此处运行您的 java 脚本。)

分离(返回 SSH):

CTRL + A + D

重新连接(在新的 SSH 会话上):

screen -r

屏幕上的更多信息:Documentation

【讨论】:

    【解决方案2】:

    尝试 nohup 和作业启动命令,nohup 最适合长时间运行的作业,无论它运行的 SSH 会话如何。

    nohup java -jar cloud-config-server/target/*.jar > logs/cloud-config-server.log 2>&1 &
    

    文档:https://linuxize.com/post/linux-nohup-command/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多