使用普通的spring mvn命令,我可以从命令行启动spring boot应用程序并使用Control + c终止它。然而,我已经创建了一系列服务,我将在稍后停靠。现在它们是由mvn生成的普通java jar文件。如何使用python脚本或Bash脚本逐个启动它们,然后使用脚本终止它们。有没有办法我启动它,脚本不会阻止,应用程序将有一个名称,我可以在以后用来停止应用程序?
答案 0 :(得分:3)
我会按照documentation安装Spring-Boot
应用程序作为Unix/Linux
服务。
您所要做的就是将此依赖项添加到pom.xml
:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
添加插件后,您应该安装并创建符号链接到您的应用程序(exact part of documentation):
假设您安装了Spring Boot应用程序
/var/myapp
,将Spring Boot应用程序安装为init.d服务 只需创建一个符号链接:
$ sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp
安装完成后, 您可以通常的方式启动和停止服务。例如,在a 基于Debian的系统:
$ service myapp start
然后,您就可以以干净的方式为您的应用程序start
,stop
或restart
创建一个bash脚本。
答案 1 :(得分:2)
您可以使用脚本来实现。例如,startup.sh
可能看起来像这样。它将启动应用程序并将进程ID写入/path/to/app/pid.file
#!/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/
答案 2 :(得分:1)
java -jar service1.jar &
pkill -f service1.jar
pkill
将终止包含所提供名称的所有进程。请注意,您的关键字只能识别您的流程,因此您不会错误地终止其他流程。
答案 3 :(得分:0)
此脚本可轻松自动查找jar文件的最新版本:
https://github.com/tyrion9/spring-boot-startup-script
./bootstrap.sh start
./bootstrap.sh stop
./bootstrap.sh restart