Bash脚本启动spring-boot app并完成脚本

时间:2016-04-28 15:30:34

标签: bash deployment spring-boot

我有一个bash脚本来部署我的spring-boot应用程序(使用bamboo)。

当spring-boot应用程序启动并运行

时,

脚本会挂起

java -jar myApp.jar

我尝试使用

在后台运行它
java -jar myApp.jar &

以及

java -jar myApp.jar &
disown

只是"&" "&"似乎什么都不做其次是" disown"使脚本失败。

如何在spring-boot应用程序继续运行时让脚本完成?

4 个答案:

答案 0 :(得分:3)

有多种选择,一种是提到的,#no; nohup'命令。另一种运行方式是使用' screen'虚拟终端。但我建议你采取一个更好的方法,并在* nix机器上运行它作为任何其他后台服务(如apache,mysql等)

这里是我在 render: function() { return ( <TextInput ref={function(input) { if (input != null) { input.focus(); } }} /> ); }, 脚本中的非常简单的代码,你可以编辑几行来设置你的约定并保存这个文件 /etc/init.d/目录中的任何名称,例如/etc/init.d/great-spring-boot-app

然后使其可执行:  /etc/init.d/my-cool-spring-boot-app

之后可以通过执行类似

的操作来启动流程

chmod +x /etc/init.d/my-cool-spring-boot-app

其他选项包括:

sudo service my-cool-spring-boot-app start

stop|restart|status

这是在Linux上启动后台服务的合适方法。

答案 1 :(得分:1)

nohup java -jar myApp.jar &

当TTY关闭时,

nohup将拦截HUP(挂断)信号。这可以防止在用户注销/远程会话结束时终止进程。 &符号用于在后台启动该过程。

答案 2 :(得分:1)

使用启动和关闭脚本

我已经回答了类似的问题here

您可以使用一组脚本来实现此目的。例如,startup.sh可能看起来像这样。它将启动应用程序,并将进程ID写入/path/to/app/pid.filenohup放弃该进程,因此该进程不会继续当前的TTY会话。

#!/bin/bash
nohup java -jar /path/to/app/hello-world.jar > /path/to/log.txt 2>&1 &
echo $! > /path/to/app/pid.file

shutdown.sh可能看起来像这样。

#!/bin/bash
kill $(cat /path/to/app/pid.file)

您可以在我的帖子中找到更多详细信息。 https://springhow.com/start-stop-scripts-for-spring-boot-applications/

答案 3 :(得分:0)

轻松停止/启动spring boot应用程序uber jar https://github.com/tyrion9/spring-boot-startup-script

将uber jar文件复制到同一文件夹中

./bootstrap.sh start
./bootstrap.sh stop
./bootstrap.sh restart