Linux下部署Spring Boot jar

部署Spring Boot项目可以使用Maven命令mvn:clean package将项目打包成只执行的jar文件,然后使用命令java -jar XX.jar来执行。但这样做无法将shell命令行释放,关闭terminal后项目也随之关闭了。这里介绍在Linux系统中后台运行Spring Boot jar文件的方法。

实现这个功能主要依赖于Linux的nohup命令。nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。

nohup语法:

1
2
3
nohup 命令
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ][ & ]

 

所以只需要在启动命令前加上nohup命令,末尾加上&即可:nohup java -jar XX.jar &

为了方便,我们可以编写启动脚本start.sh

1
nohup java -jar XX.jar &

 

关停脚本stop.sh

1
2
3
4
5
6
7
8
PID=`ps -ef | grep sms-2.0.jar | grep -v grep | awk '{print $2}'`
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill -9 $PID
fi

 

重启脚本run.sh

1
2
3
4
echo stop application
source stop.sh
echo start application
source start.sh

 

在编写shell脚本的过程中遇到了两个问题:

  1. 执行.sh文件提示权限不足:

    解决办法:执行命令chmod u+x XX.sh赋予当前用于可执行的权限即可。

  2. 提示/bin/bash^M: bad interpreter: 没有那个文件或目录。

    问题出现的原因是shell脚本是在windows中编写的然后上传到Linux中的,出现了兼容性问题。解决办法:执行vim XX.sh打开shell文件,然后切换到命令模式,执行:set fileformat=unix后保存退出即可。

使用了nohup命令后,会在jar文件目录下生成一个nohup.out文件,可通过其观察当前项目的运行情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ ll
总用量 76612
drwxrwxr-x 2 zjrun zjrun     4096 2月   8 08:49 log
-rw------- 1 zjrun zjrun 58695723 2月   8 10:15 nohup.out
-rwxrw-r-- 1 zjrun zjrun       88 2月   7 15:17 run.sh
-rw-rw-r-- 1 zjrun zjrun 19730199 2月   8 10:11 sms-1.0.jar
-rwxrw-r-- 1 zjrun zjrun       60 2月   7 15:22 start.sh
-rwxrw-r-- 1 zjrun zjrun      184 2月   7 15:19 stop.sh

$ tail -10f nohup.out 
10:14:31.309 logback [main] INFO  o.s.j.e.a.AnnotationMBeanExporter - Registering beans for JMX exposure on startup
10:14:31.478 logback [main] INFO  o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8963"]
10:14:31.498 logback [main] INFO  o.a.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8963"]
10:14:31.506 logback [main] INFO  o.a.tomcat.util.net.NioSelectorPool - Using a shared selector for servlet write/read
10:14:31.634 logback [main] INFO  o.s.b.c.e.t.TomcatEmbeddedServletContainer - Tomcat started on port(s): 8963 (http)
10:14:31.644 logback [main] INFO  com.xingyi.sms.SmsApplication - Started SmsApplication in 7.213 seconds (JVM running for 8.03)
complete!
10:15:26.978 logback [http-nio-8963-exec-1] INFO  o.a.c.c.C.[.[localhost].[/mobilePre] - Initializing Spring FrameworkServlet 'dispatcherServlet'
10:15:26.979 logback [http-nio-8963-exec-1] INFO  o.s.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcherServlet': initialization started
10:15:27.004 logback [http-nio-8963-exec-1] INFO  o.s.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcherServlet': initialization completed in 25 ms
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值