从 SSH 启动 java spring boot 应用程序的 Bash 脚本

从 SSH 启动 java spring boot 应用程序的 Bash 脚本

我有一个简单的 bash 脚本文件,它是从管道作业(通过 SSH )触发的。这部署.sh或多或少包含这样的内容:

cd /apps && java -jar "-Dspring.profiles.active=prod " "-Dserver.port=$PORT " \
"/apps/$DEPLOYING_VERSION" &

还有其他一些不那么重要的逻辑。通过 SSH 的管道执行:

bash /deploy.sh ${APPLICATION_NAME}

如何开始部署.sh为了执行 java -jar 并将其与部署.sh为了完成我的管道(作业)并同时让 java 应用程序继续在机器上工作?我尝试过

cd /apps && nohup java -jar "-Dspring.profiles.active=prod " "-Dserver.port=$PORT " \
"/apps/$DEPLOYING_VERSION" &

但工作却卡住了...

跟踪并退出 java -jar 会很酷,但现在并不那么重要:)

答案1

如果您想并行运行cd /apps,则java -jar应该使用单个 & 符号,而不是两个: cd /apps & java -jar。但是,java -jar如果该命令假定在 /apps 目录中运行,则该命令将不起作用。

更一般而言,command1 & command2将独立并行运行 command1 和 command2。

请注意,您的 CI/CD 工具(假设您正在谈论 CI/CD 管道)可能支持并行运行任务,因此您也可以尝试在管道定义中解决此问题(如果这对您的情况有意义)。

答案2

cd /apps;
nohup java -jar "-Dspring.profiles.active=prod " "-Dserver.port=$PORT " \
"/apps/$DEPLOYING_VERSION" > /apps/spring.log 2>&1 &

发挥魔力。

相关内容