我们通常要启动一个jar包的话首先就是从git中拉取代码,然后使用maven命令进行打包,再java -jar启动程序。这样的一个过程是非常没有实际意义的且非常浪费时间,更别提有时候重启还需要kill了,那么今天小编就来教大家如何使用Linux脚本执行。
首先需要交代的是,这里小编项目的结构目录是这样的:
打出来的jar包通常在xxxx-web/target/文件夹下。jar包名为fastboot.jar。
前提条件交代清楚了我们就来看下如何使用脚本吧~
Linux脚本Linux脚本通常是以.sh结尾的文件,所以我们在项目目录下创建了一个start.sh的文件,具体代码如下:
echo "------------------iFillDream start.sh is starting......-----------------"echo "是否拉取代码(回车表示拉取):"read hasGitPull#当前脚本目录BASE_DIR=$(cd `dirname $0`; pwd)if [ ! $hasGitPull ]; then echo "###########开始更新代码:git pull##########" git pull echo "###############代码更新完毕###############" sleep 3fiecho "------是否后台运行,回车表示yes:"read hasNohupecho "###########开始maven打包:mvn clean package#############"mvn clean package -Dmaven.test.skip=true -Uif [ $? -ne 0 ]; then echo "" echo "***********************************************************" echo "[INFO]Maven打包失败" echo "***********************************************************" exit 1fiecho "#####################Maven打包成功#####################"jartype=.jarjarpath=${BASE_DIR}/$1-web/target/jarname=$1${jartype}echo "jar包地址:"${jarpath}echo "jar包名称:"${jarname}cd $jarpath#获取正在运行的jar的pid,注意此处用到了java -jar作为关键词搜索,防止搜索出多个相同内容pid=$(ps -ef | grep $jarname | grep 'java -jar' | grep -v grep | awk '{print $2}')echo "#######PID:"$pidif [ ! $pid ]; then echo "#######尚未运行:"$jarnamefiif [[ -n $pid ]]; then kill -9 $pid sleep 5 echo $jarname "的pid为" $pid ",已将其杀死..."fidefaultprofile=$2if [ ! $2 ]; then echo "####################################################################################" echo "No spring.profiles.active,Now default is family,If stop you can please input ctrl+c" echo "####################################################################################" defaultprofile=family sleep 3fiif [ ! $hasNohup ]; then echo "################开始后台运行......###############################" nohup java -jar -Xms256m -Xmx256m -XX:PermSize=128M -XX:MaxPermSize=256M $jarname --spring.profiles.active=$defaultprofile & pid=$(ps -ef | grep $jarname | grep 'java -jar' | grep -v grep | awk '{print $2}') echo "###############命令执行完毕,请自行验证是否启动成功:"$pid"###############"else echo "#############前台运行......#############" java -jar -Xms256m -Xmx256m -XX:PermSize=128M -XX:MaxPermSize=256M $jarname --spring.profiles.active=$defaultprofile echo "#############前台运行关闭############"fi
为了方便理解里面的代码,我们稍微来做讲解:
echo:输出内容
read xx:输入一个变量xx
iif [ ! $hasGitPull ]; then:表示hasGitPull变量为空
sleep 3:休眠3秒
$0:当前运行的脚本
$1:启动脚本时的第一个参数
$2:启动脚本时的第二个参数
注意在启动时请确保java和-jar是一起的而不是分开的,否则pid将无法查找
若还有不懂得,可以后台留言给小编哟~
运行效果随后开始maven打包,打包完成后查找是否已启动,若已启动则kill掉进程再启动jar包:
由于是后台启动,并不确定程序是否真正启动,所以还需要自行验证一下接口是否成功,这里只做基本的输出,当然也可以前台启动了。
好了,基本的脚本命令就介绍到这,小伙伴们可以根据实际项目稍作修改即可拥有自己的脚本啦。
【更多精彩】
HMAC-MD5签名算法
Java-微信JSSDK
还不知道如何使用IDEA上传项目到Git?