我有一个bash脚本来部署我的spring-boot应用程序(使用bamboo)。
当spring-boot应用程序启动并运行时,脚本会挂起
java -jar myApp.jar
我尝试使用
在后台运行它java -jar myApp.jar &
以及
java -jar myApp.jar &
disown
只是"&" "&"似乎什么都不做其次是" disown"使脚本失败。
如何在spring-boot应用程序继续运行时让脚本完成?
答案 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 &
nohup
将拦截HUP
(挂断)信号。这可以防止在用户注销/远程会话结束时终止进程。 &符号用于在后台启动该过程。
答案 2 :(得分:1)
我已经回答了类似的问题here。
您可以使用一组脚本来实现此目的。例如,startup.sh
可能看起来像这样。它将启动应用程序,并将进程ID写入/path/to/app/pid.file
。nohup
放弃该进程,因此该进程不会继续当前的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