`
g21121
  • 浏览: 694549 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自己写的springboot项目启动脚本

 
阅读更多

        网上的一些脚本,不是粗制滥造就是可维护性不强,所以自己写了一份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
#----------------------------------------------↑执行区↑----------------------------------------------#

 

1
0
分享到:
评论

相关推荐

    centos7下启动springboot项目启动脚本(shell脚本)

    前言:打包好的springboot项目,可以使用java -jar xxx.jar的方式启动。当出现多个springboot项目需要启动的时候,可以使用脚本启动的方式。这在springcloud项目的开发测试阶段尤为有用。以下展示启动脚本示例,过程...

    SpringBoot windows启动脚本

    SpringBoot windows启动脚本

    springboot项目启动bat脚本

    "springboot项目启动bat脚本"指的是一个批处理(.bat)文件,用于自动化启动Spring Boot应用程序的过程。这种脚本大大简化了操作,使得开发者或运维人员能够便捷地启动服务,而无需手动通过命令行执行`java -jar`...

    Linux中springboot项目启动脚本

    springboot项目启动脚本,jar包项目万能启动脚本,只需要替换文件中注释的需要替换的地方 其他不需要改动,将脚本文件放到项目jar包相同目录下,再给脚本文件赋予权限:chmod +x 脚本文件名 之后直接:./脚本文件名...

    springboot项目linux系统下 通用 启动脚本

    springboot项目linux系统下 通用 启动脚本 支持日志输出、远程调试开启 支持start、stop、restart命令 通用启动脚本,只需将服务名改成自己的服务名即可! 保证可用!

    springboot项目启动脚本

    springboot项目启动脚本,在linux中修改jar包名称,赋予执行权限即可运行,使用./***.sh运行

    springboot 快捷启动脚本

    Springboot项目,快速启动脚本,可以结合需要自己看看

    Springboot-服务-Windows 一键启动、停止脚本

    "Springboot-服务-Windows 一键启动、停止脚本"这个主题关注的是如何为Spring Boot应用程序创建自定义的批处理脚本来执行这些操作。批处理脚本是Windows操作系统中的文本文件,扩展名为`.bat`,它们包含了可执行的...

    SpringBoot项目启动时实现调用一次初始化方法.docx

    在Spring Boot应用中,我们经常需要在项目启动时执行一次初始化操作,比如加载配置、预设数据等。这里我们将详细探讨如何实现这个需求,主要涉及`@PostConstruct`注解、`CommandLineRunner`接口以及在启动类中直接...

    springboot项目关闭脚本

    springboot项目关闭脚本,将文件上传linux服务器,修改需要关闭的jar文件,赋予执行权限,通过./***.sh启动

    Centos下SpringBoot项目启动与停止脚本的方法

    Centos下SpringBoot项目启动与停止脚本的方法 Centos系统下SpringBoot项目的启动与停止脚本是非常重要的操作步骤。下面我们将详细介绍如何在Centos系统下使用Maven脚本来启动和停止SpringBoot项目。 Maven插件的...

    springBoot项目脚本启动.rar

    在给定的“springBoot项目脚本启动.rar”压缩包中,我们可以推测这包含了一组脚本,旨在帮助用户更便捷地启动一个基于Spring Boot的微服务项目。 微服务架构是一种将大型复杂应用拆分为一系列小型、独立、可部署的...

    spring boot/spring cloud项目启动脚本,默认名称:start.sh

    linux服务器,springboot,spring cloud、spring cloud alibaba等项目启动脚本 下载脚本, 1,上传脚本至jar包同级目录 2,更改脚本: jar包名称 项目文件路径 日志路径(包含日志名称) 脚本已配置好jvm优化...

    springboot 微服务直接可以使用的脚本无需任何修改

    该脚本无需任何修改,只可以直接使用,springboot项目的jar包启动方式,只要是springboot的jar包,都可以直接使用

    linux一键启动、关闭、重启springboot项目脚本

    修改jar包名称,修改脚本权限为777。 使用方法: ./server.sh start(stop/restart)

    linux 下 springboot项目升级 及 启动脚本,自用留存

    3. **启动脚本**: - 脚本中可能包含了`nohup java -jar app.jar &`这样的命令,用于后台启动SpringBoot应用。`nohup`确保程序在终端关闭后仍能继续运行,`&`将进程放入后台执行。 4. **停止脚本**: - 通常通过...

    springboot项目使用服务部署到windows系统

    这是一个将spingboot项目打包的jar通过windows服务管理的项目 目录说明: config: 可放置外部yml等配置文件 firmware: 放置jar包,目前只支持一个jar包 jdk*: 放置jar依赖的java库 BatServices.exe: 64位程序,使用...

    Springboot项目与vue项目整合打包的实现方式

    项目代码互不影响,借助Jenkins这样的构建工具在构建Springboot时触发前端构建并编写自动化脚本将前端webpack构建好的资源拷贝到Springboot下再进行jar的打包,最后就得到了一个完全包含前后端的Springboot项目。...

    IDEA如何运行SpringBoot项目

    在开发Java应用,特别是SpringBoot项目时,IntelliJ IDEA(IDEA)是一个非常流行的集成开发环境。本文将详细介绍如何在IDEA中运行一个SpringBoot项目,包括必要的环境准备、配置Maven、设置JDK环境以及数据库配置。 ...

    Shell脚本启动和停止springboot的jar包

    在启动脚本中,可能会有如下的命令结构: ```bash #!/bin/bash # 设置JAR文件路径 APP_JAR=/path/to/your/spring-boot-app.jar # 设置内存配置 JAVA_OPTS="-Xms512M -Xmx1024M -XX:MaxMetaspaceSize=256M" # 启动...

Global site tag (gtag.js) - Google Analytics