网上的一些脚本,不是粗制滥造就是可维护性不强,所以自己写了一份springboot项目的启动脚本,水平有限,还有优化的空间。
以下是使用脚本后的示例:
$ sh server.sh start -p=test -v="-Xms512m -Xmx512m" -j=example_server.jar ▫开始停止:example_server.jar ▫执行时间:2020-06-24 11:24:34 ▫当前进程:19025 ▫停止进程:19025 ▫执行结果:停止成功! ▫开始启动:example_server.jar ▫执行时间:2020-06-24 11:24:39 ▫执行结果:启动成功! $ sh server.sh status ▫当前文件:example_server.jar ▫当前进程:22315 ▫启动时间:11:24 ▫运行时长:00:00:25 ▫启动命令:java -jar -Xms512m -Xmx512m example_server.jar --spring.profiles.active=test $ sh server.sh start ▫开始停止:example_server.jar ▫执行时间:2020-06-24 11:25:23 ▫当前进程:22315 ▫停止进程:22315 ▫执行结果:停止成功! ▫开始启动:example_server.jar ▫执行时间:2020-06-24 11:25:28 ▫执行结果:启动成功! $ sh server.sh status ▫当前文件:example_server.jar ▫当前进程:24527 ▫启动时间:11:25 ▫运行时长:00:00:14 ▫启动命令:java -jar -Xms256m -Xmx256m example_server.jar $ sh server.sh 使用方法:sh server.sh [start|stop|restart|status] [-j,-v,-p] 精简命令:sh server.sh start 精简命令:sh server.sh status 精简命令:sh server.sh start -p=dev 精简命令:sh server.sh start -p=dev -j=name.jar [操作类型] [虚拟机参数,可选] ↓ ↓ 完整命令:sh server.sh start -j=example_server.jar -v='-Xms512m -Xmx512m' -p=dev ↑ ↑ [文件名,无则搜索当前目录] [springboot配置选择,可选]
本脚本可以根据不同的选择单独指定参数,也可以不指定参数而自动启动,以下为源码,可以根据自身情况修改:
#!/bin/sh export BUILD_ID=cds #----------------------------------------------↓变量区↓----------------------------------------------# #操作类型 OPERATION=$1 #执行文件名,例如:example_server.jar) JAR_NAME="" #虚拟机参数,例如:-Xms256m -Xmx256m VM_OPTIONS="" #springboot 配置文件指定 #例如:dev/test/pro等,对应application-dev.yml/application-test.yml/application-pro.yml #不指定则不是springboot项目或直接使用application.yml PROFILE_ACTIVE="" #颜色定义 RESTORE=$(echo -en '\033[0m') BLACK=$(echo -en '\033[00;30m') RED=$(echo -en '\033[00;31m') GREEN=$(echo -en '\033[00;32m') YELLOW=$(echo -en '\033[00;33m') BLUE=$(echo -en '\033[00;34m') MAGENTA=$(echo -en '\033[00;35m') PURPLE=$(echo -en '\033[00;35m') CYAN=$(echo -en '\033[00;36m') T_GREEN=$(echo -en '\033[1;32m') #----------------------------------------------↑变量区↑----------------------------------------------# #----------------------------------------------↓方法区↓----------------------------------------------# #设置参数 function setOpt() { if [ -n "${1}" ] ; then #从第0个字符起,取3个字符 opt=${1:0:3} value=${1:3} case $opt in -j=) JAR_NAME=${value} ;; -v=) VM_OPTIONS=${value} ;; -p=) PROFILE_ACTIVE=${value} ;; esac fi } #检查程序是否在运行 function status() { #初始化参数 #进程ID PID=`ps -ef|grep 'java'|grep ${JAR_NAME}|grep -v 'grep'|head -1|awk '{print $2}'` #启动时间 START_DATE=`ps -ef|grep 'java'|grep ${JAR_NAME}|grep -v 'grep'|head -1|awk '{print $5}'` #运行时长 DURATION=`ps -ef|grep 'java'|grep ${JAR_NAME}|grep -v 'grep'|head -1|awk '{print $7}'` #启动命令 COMMOND=`ps -ef|grep 'java'|grep ${JAR_NAME}|grep -v 'grep'|head -1|awk -F " " '{for (i=8;i<=NF;i++)printf("%s ", $i);print ""}' ` #如果进程存在 if [ -n "${PID}" ] ; then echo -e "▫当前文件:${BLUE}${JAR_NAME}${RESTORE}" echo -e "▫当前进程:${BLUE}${PID}${RESTORE}" echo -e "▫启动时间:${BLUE}${START_DATE}${RESTORE}" echo -e "▫运行时长:${BLUE}${DURATION}${RESTORE}" echo -e "▫启动命令:${BLUE}${COMMOND}${RESTORE}" else echo -e "▫当前文件:${BLUE}${JAR_NAME}${RESTORE}" echo -e "▫执行结果:${RED}进程未启动!${RESTORE}" fi } #停止方法 function stop() { #初始化参数 timeNow=$(date "+%Y-%m-%d %H:%M:%S") echo -e "▫开始停止:${BLUE}${JAR_NAME}${RESTORE}" echo -e "▫执行时间:${BLUE}${timeNow}${RESTORE}" #获取PID PID=`ps -ef|grep 'java'|grep ${JAR_NAME}|grep -v 'grep'|head -1|awk '{print $2}'` #运行中 if [ -n "${PID}" ] ; then echo -e "▫当前进程:${BLUE}${PID}${RESTORE}" echo -e "▫停止进程:${BLUE}${PID}${RESTORE}" #杀死进程 kill -9 "$PID" #等待结束 sleep 5s #确认是否成功停止 PID=`ps -ef|grep 'java'|grep ${JAR_NAME}|grep -v 'grep'|head -1|awk '{print $2}'` if [ -z "${PID}" ] ; then echo -e "▫执行结果:${GREEN}停止成功!${RESTORE}" else echo -e "▫执行结果:${RED}停止失败!${RESTORE}" exit 1 fi else echo -e "▫执行结果:${RED}进程未启动!${RESTORE}" fi } #启动方法 function start() { timeNow=$(date "+%Y-%m-%d %H:%M:%S") echo -e "▫开始启动:${BLUE}${JAR_NAME}${RESTORE}" echo -e "▫执行时间:${BLUE}${timeNow}${RESTORE}" #echo "▫参数:"${VM_OPTIONS} ${JAR_NAME} ${PROFILE_ACTIVE} #运行 nohup java -jar ${VM_OPTIONS} ${JAR_NAME} ${PROFILE_ACTIVE}>>/dev/null 2>&1 & #等待进程启动 sleep 5s PID=`ps -ef|grep 'java'|grep ${JAR_NAME}|grep -v 'grep'|head -1|awk '{print $2}'` if [ -n "${PID}" ] ; then echo -e "▫执行结果:${GREEN}启动成功!${RESTORE}" else echo -e "▫执行结果:${RED}启动失败!${RESTORE}" fi } #使用说明,用来提示输入参数 function usage() { echo -e "使用方法:sh server.sh [${GREEN}start${RESTORE}|${GREEN}stop${RESTORE}|${GREEN}restart${RESTORE}|${GREEN}status${RESTORE}] [${YELLOW}-j${RESTORE},${BLUE}-v${RESTORE},${PURPLE}-p${RESTORE}]" echo -e "精简命令:sh server.sh ${GREEN}start${RESTORE}" echo -e "精简命令:sh server.sh ${GREEN}status${RESTORE}" echo -e "精简命令:sh server.sh ${GREEN}start${RESTORE} ${PURPLE}-p=dev${RESTORE}" echo -e "精简命令:sh server.sh ${GREEN}start${RESTORE} ${PURPLE}-p=dev${RESTORE} ${YELLOW}-j=name.jar${RESTORE}" echo -e " [${GREEN}操作类型${RESTORE}] [${BLUE}虚拟机参数,可选${RESTORE}]" echo -e " ↓ ↓ " echo -e "完整命令:sh server.sh ${GREEN}start${RESTORE} ${YELLOW}-j=example_server.jar${RESTORE} ${BLUE}-v='-Xms512m -Xmx512m'${RESTORE} ${PURPLE}-p=dev${RESTORE}" echo -e " ↑ ↑ " echo -e " [${YELLOW}文件名,无则搜索当前目录${RESTORE}] [${PURPLE}springboot配置选择,可选]${RESTORE}" exit 1 } #----------------------------------------------↑方法区↑----------------------------------------------# #----------------------------------------------↓执行区↓----------------------------------------------# #1.获取所有参数 for key in "$@" do setOpt "${key}" done #2.初始化,如果未指定参数值,则按默认处理 #如果未指定可执行文件 if [ -z "${JAR_NAME}" ] ; then #如果未指定,则在本目录下查找 path=`pwd` jarName=`find . -name '*.jar'` count=`find . -name '*.jar'|wc -l` if [ ${count} -gt "1" ] ; then echo -e '在'${path}'下找到多个jar文件,请指定可执行文件名称!' exit 1 elif [ ${count} -eq "1" ] ; then JAR_NAME=${jarName:2} else echo -e '在'${path}'下未找到可执行jar文件!' exit 1 fi fi #如果未指定虚拟机参数,默认处理 if [ -z "${VM_OPTIONS}" ] ; then VM_OPTIONS="-Xms256m -Xmx256m" fi #如果指定springboot配置文件 if [ -n "${PROFILE_ACTIVE}" ] ; then PROFILE_ACTIVE="--spring.profiles.active="${PROFILE_ACTIVE} fi #3.根据输入参数,选择执行对应方法,不输入则执行使用说明 case "${OPERATION}" in "start") stop start ;; "stop") stop ;; "status") status ;; "restart") stop start ;; *) usage ;; esac #----------------------------------------------↑执行区↑----------------------------------------------#
相关推荐
前言:打包好的springboot项目,可以使用java -jar xxx.jar的方式启动。当出现多个springboot项目需要启动的时候,可以使用脚本启动的方式。这在springcloud项目的开发测试阶段尤为有用。以下展示启动脚本示例,过程...
windows下启动springboot的jar包, 自动启动springboot项目脚本文件
springboot项目启动脚本,jar包项目万能启动脚本,只需要替换文件中注释的需要替换的地方 其他不需要改动,将脚本文件放到项目jar包相同目录下,再给脚本文件赋予权限:chmod +x 脚本文件名 之后直接:./脚本文件名...
springboot项目linux系统下 通用 启动脚本 支持日志输出、远程调试开启 支持start、stop、restart命令 通用启动脚本,只需将服务名改成自己的服务名即可! 保证可用!
springboot项目启动脚本,在linux中修改jar包名称,赋予执行权限即可运行,使用./***.sh运行
Springboot项目,快速启动脚本,可以结合需要自己看看
Springboot-服务-Windows 一键启动、停止脚本
SpringBoot项目启动时实现调用一次初始化方法
springboot项目关闭脚本,将文件上传linux服务器,修改需要关闭的jar文件,赋予执行权限,通过./***.sh启动
linux服务器,springboot,spring cloud、spring cloud alibaba等项目启动脚本 下载脚本, 1,上传脚本至jar包同级目录 2,更改脚本: jar包名称 项目文件路径 日志路径(包含日志名称) 脚本已配置好jvm优化...
主要介绍了Centos下SpringBoot项目启动与停止脚本的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
该脚本无需任何修改,只可以直接使用,springboot项目的jar包启动方式,只要是springboot的jar包,都可以直接使用
修改jar包名称,修改脚本权限为777。 使用方法: ./server.sh start(stop/restart)
微服务项目多模块启动更加方便,不用一个个起启动项目
Shell脚本启动和停止springboot的jar包,并增加了内存的配置
# springboot的jar放同级目录下即可,只能有一个jar文件 export PATH=$JAVA_HOME/bin:$PATH CURRENT_PATH=$(cd $(dirname $0); pwd) JAR=$(find $CURRENT_PATH -maxdepth 1 -name *.jar) PID=$(ps -ef | grep $JAR |...
springboot 执行脚本,启动,停止,重启等。
该资源包含启动springboot项目的shell脚本文件、以及日志分割必备的cronolog压缩文件
包含 拉取测试服务器文件到正式脚本 启动脚本 停止脚本 启动并停止脚本 自用留存,有需要可下载。
Linux服务:springboot,spring cloud、spring cloud alibaba项目启动脚本 下载脚本,上传脚本至jar包同级目录: #上传至目录后,进入脚本所在目录执行命令 chmod +x start_server.sh #脚本使用: sh start_server...