前端时间自己写了个springboot项目部署到虚拟机服务器上,使用 java -jar jar包名 进行项目启动。但大家就要问了,那么如何关闭项目呢?springboot是微服务框架,内嵌tomcat服务器。一般情况下是使用ps -ef|grep java查看进程,然后找到自己要结束工程的进程号,在使用 kill -9 进程号 结束掉。但是这样太麻烦了,先不说是否会看错进程号而结束错项目,要是现网环境就糟了。所以就教大家一种安全方便的方法——使用shell脚本。
进入到自己的springboot项目的jar包(建议springboot项目打成jar包部署)同目录下,使用touch start.sh创建一个脚本文件,然后vi start.sh进行编辑,输入i定位到当前位置进入输入模式就可以进行内容编辑了,输入的内容看下面。
请看下面的shell命令:
#!/bin/bash
jarname='demo-0.0.1-SNAPSHOT'
pid=`ps aux | grep $jarname | grep -v grep | awk '{print $2}'`
echo $pid
kill -9 $pid
java -jar $jarname.jar
nohup java -jar /zz/$jarname.jar >/zz/run.log &
下面对每一行做出详细解释:
#!/bin/bash
这句话一般放在shell脚本的开头,用来定义使用哪种sh解释器来解释脚本。其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。
bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,…。所以,除第一行外,脚本中所有以“#”开头的行都是注释。
jarname='demo-0.0.1-SNAPSHOT'
这句话类似java中的定义变量,将demo-0.0.1-SNAPSHOT赋值给jarname这个变量,下文可以通过$jarname来调用。
pid=`ps aux | grep $jarname | grep -v grep | awk '{print $2}'`
这句话的作用是查找你项目的运行进程号,$jarname是引用的上面的工程名变量。pid就是你要结束的工程的进程号,所以大家使用这段话可以直接复制。
echo $pid
输出进程号
kill -9 $pid
结束进程
java -jar $jarname.jar
重新启动该项目
nohup java -jar /zz/$jarname.jar >/zz/run.log &
将项目中的日志输出到/zz/run.log这个目录下的日志文件中,所以看日志直接tail -f run.log就可以了。
好了,介绍完毕了。如有不对或完善的地方欢迎指正交流,谢谢大家。