【问题标题】:Linux Launch java program on startup (EC2 instance)Linux 启动时启动 java 程序(EC2 实例)
【发布时间】:2021-02-23 23:53:11
【问题描述】:

我的服务器程序需要在 EC2 实例启动时启动。目前我只是使用以下命令从我的 SSH 启动它:

 java -jar ~/DocumentManager/DocumentServer-0.2.jar  

我尝试将其添加到 .bashrc 和 /etc/rc.local 文件中,但它们似乎只在我 ssh 时才起作用。

有谁知道如何在计算机启动时启动我的应用程序实例?

谢谢,

【问题讨论】:

标签: java linux amazon-ec2 amazon-web-services


【解决方案1】:

您可以像这样创建一个脚本java_server_launch.sh

 #! /usr/bin/sh

    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    JAVA=/usr/bin/java
    MY_SERVER=/home/your_username/DocumentManager/DocumentServer-0.2.jar
    USER=your_username
    /bin/su - $USER -c "$JAVA -jar $MY_SERVER &"

把你的脚本放到/etc/init.d目录下,然后使用命令:

update-rc.d java_server_launch.sh defaults

更多关于使用man update-rc.dupdate-rc.d命令。

希望对您有所帮助。

问候。

【讨论】:

  • 嗨,我试过了,但它不起作用。我 ssh 进入并查看了正在运行的进程,但它不存在。我需要在某处放置启动脚本吗?
  • @BenFlowers : 你好,是在 /etc/init.d 目录下
  • 好的,基本上我创建了 java_server_launch.sh 文件,然后运行你说的命令。还有什么我需要做的吗? (仍然不工作)谢谢你的帮助顺便说一句
  • @BenFlowers :我编辑了我的帖子,顺便说一下,您可以查看 /etc/init.d/skeleton 文件,了解如何使用它来满足您的需求。
  • 仍然无法正常工作,我可以告诉它关闭!所以我的 jar 文件位于 ~/DocumentManager/DocumentServer-0.2.jar 并且我以 ubuntu@(amazoninstance) 身份登录。我将我的 script.sh 文件存储在 /etc/init.d 中,它看起来像这样:#! /usr/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin JAVA=/usr/bin/java MY_SERVER=~/DocumentManager /DocumentServer-0.2.jar USER=ubuntu /bin/su - $USER -c "$JAVA -jar $MY_SERVER &" 并运行 update-rc.d script.sh 默认任何线索我做错了什么?
【解决方案2】:

在命令末尾添加和号(符号'&')。 例如,在您的情况下,java -jar ~/DocumentManager/DocumentServer-0.2.jar &

老问题,但我的回答可能对未来的人有所帮助。

【讨论】:

    【解决方案3】:

    您还可以将程序作为服务运行,该服务会在 ec2 容器重启时自动运行。以下链接对我有用:

    https://medium.com/@lizlieholleza/run-your-java-application-as-a-service-in-an-ec2-instance-amazon-linux-d7c7b4c0b2f4

    【讨论】: