首页 > 其他分享 >springboot项目自动运行脚本

springboot项目自动运行脚本

时间:2023-09-07 12:34:02浏览次数:41  
标签:脚本 grep springboot package tpid 自动 NAME kill log

注意文件格式unix格式(Windows cr lf换行符有不可见字符)

#!/bin/sh 

# 服务名(要与配置文件中的server名保持一致)
APP_NAME=""

# git本地仓库路径
GIT_RESPOSITORY=""

# 配置文件存储位置
PROFILE_LOCATION=""

# 配置文件名
PROFILE_NAME=""

# 日志文件存储位置
LOG_LOCATION=""

# maven打包文件名(jar包)
PROKAGE_NAME=""

# maven打包的相对路径(git仓库下的相对路径)
MAVEN_PROKAGE_LOCATION=""


clear
echo "+-------------------------------+"
echo "|   自动化部署xx项目后台服务脚本  |"
echo "+-------------------------------+"


#控制台输出日志
_log(){
	echo [$(date +"%Y-%m-%d %H:%M:%S")] $@
}

#根据名称结束进程
_kill_program(){
	app_name="$1"
	tpid=`ps -ef|grep $app_name |grep -v grep|grep -v kill|awk '{print $2}'`
	if [ ${tpid} ]; then
		_log '停止进程中...'
		kill -15 $tpid
	fi
	sleep 2
	tpid=`ps -ef|grep $app_name |grep -v grep|grep -v kill|awk '{print $2}'`
	if [ ${tpid} ]; then
		_log '停止进程失败,强制结束进程!'
		kill -9 $tpid
	else
		_log '项目已停止!'
	fi
}

# 拉取代码并打包
_git_pull_and_maven_package(){
	git_res="$1"
	cd $git_res
	_log 开始从Git仓库拉取最新代码
	git pull
	_log 代码拉取完成
	_log 开始打包
	output=`mvn clean package -Dmaven.test.skip=true`
	_log 打包结束
}

_main(){
	_log "检查项目是否正在运行..."
	# 结束原有进程
	_kill_program ${APP_NAME}
	# 拉取最新代码,并打包
	/0_user/sh/common/git_pull_and_maven_package.sh ${GIT_RESPOSITORY}
	# 进入打包后的文件位置
	package=${GIT_RESPOSITORY}${MAVEN_PROKAGE_LOCATION}
	# 将本机的application.yml应用到该项目中
	cp ${PROFILE_LOCATION}/${PROFILE_NAME} $package
	mv $package/${PROFILE_NAME} $package/application.yml
	_log "后台启动项目"
	# 将日志追加到指定文件
	nohup java -jar $package/${PROKAGE_NAME} &>> ${LOG_LOCATION} &
	sleep 2
	tpid=`ps -ef|grep $APP_NAME |grep -v grep|grep -v kill|awk '{print $2}'`
	_log "项目启动完成,进程id为:${tpid}"
}

_main

标签:脚本,grep,springboot,package,tpid,自动,NAME,kill,log
From: https://www.cnblogs.com/undercure/p/17684505.html

相关文章

  • springBoot long类型 长id 到前端丢失精度问题
    在SpringBoot中,如果将Long类型的id传递到前端,可能会遇到精度丢失的问题。这是因为JavaScript无法精确地表示大于Number.MAX_SAFE_INTEGER(即9007199254740991)的整数。为了解决这个问题,你可以采用以下方法之一:方式1:通过注解方式@Data@EqualsAndHashCode(callSuper=false)......
  • SpringBoot学习之配置MyBatis常见异常
    Invalidboundstatement(notfound)出现原因和解决方法: 常见原因:1.mapper.xml中namespace和实际mapper接口所在的位置不一致。2.mapper.xml中的id名称和maapper接口中的方法名称不一致。3.如果上述两点都没有问题,那么大概率是application配置文件有配置错误。 程序和S......
  • 后缀自动机 (SAM) 的构造及应用
    cnblogs怎么又炸了。只能先写在这里了。为什么又可爱又强的xxn去年9月就会的科技樱雪喵现在还不会呢/kel。感觉SAM的教程已经被前人写烂了啊。那就写点个人学习过程中对SAM的理解。参考资料:KesdiaelKen-史上最通俗的后缀自动机详解、OIwiki-后缀自动机(SAM)。概述......
  • springboot vue人事管理系统源码
    开发环境及工具:大等于jdk1.8,大于mysql5.5,idea(eclipse),nodejs,vscode(webstorm)技术说明:springbootmybatisvueelementui代码注释齐全,没有多余代码,适合学习(毕设),二次开发,包含论文技术相关文档。功能介绍:员工端:考勤打卡:定位当前位置,打卡需要在打卡范围内才可打卡(后台设置打卡范围)我的......
  • Vue + GitLab 实现自动化部署
      二、Linux安装nginx在Linux上安装NGINX的步骤如下:打开终端(命令行界面)。使用以下命令安装NGINX:对于Ubuntu/Debian系统:sudoapt-getinstallnginx对于CentOS/RHEL系统:sudoyuminstallnginx等待安装完成。使用以下命令启动NGI......
  • 百度SpringBoot上传下载组件
    ​ 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数下面直接贴代码吧,一些难懂的我大部分都加上注释了:上传文件实体类:看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。 ......
  • 关闭Ubuntu Server系统自动更新
    修改配置文件/etc/apt/apt.conf.d/10periodic中相关设置,进行关闭即可。$sudovim/etc/apt/apt.conf.d/10periodic0是关闭,1是开启,将所有值改为0APT::Periodic::Update-Package-Lists"0";APT::Periodic::Download-Upgradeable-Packages"0";APT::Periodic::Autocle......
  • Maven 安装与环境变量配置 及 springboot项目创建
    (1)Maven安装:在官网下载:http://maven.apache.org/download.cgi  (2)Maven配置环境变量:解压到一个路径,然后配置环境变量:新建变量名:MAVEN_HOME变量值:D:\apache-maven-3.6.0(这是我的MAVEN路径)编辑变量名:Path在最前面加上:%MAVEN_HOME%\bin新建系统变量--》......
  • python+pytest+yam接口自动化
    分层设计项目下创建api、case、data、common(utils)目录:api下存放封装好的接口,case下放编写的测试用例,data下放测试数据,common下放公共操作(像连接数据库,读取yaml文件等)api下封装的登录接口:  case下对登录写的测试用例:用例设计的原则(pytest怎么去找的用例):文件名以test_*.py......
  • springboot下载文件 范围下载
    springboot下载文件范围下载关键词:springboot,download,Range,Content-Range,Content-Length,httpcode206PartialContent下载文件的一部分,我们在requestheader:Range中指定要获取的文件的字节范围。要注意httpresponseheader:Content-Length一定要与Range中所表示的获取bytes......