crontab配合sh脚本实现springboot项目自动备份后替换jar包最后重启项目

一、首先添加使用crontab -e添加定时任务

01 0 * * * sh /data/start-prd-auto.sh > /data/start-prd.log

/data是放置sh脚本的目录,这句话的意思是在每天0点01分执行sh脚本,把执行的日志写到.log文件中。

其它crontab定时任务的使用方法可以找其它专门的文章,这里不多写了,谢谢。

二、然后就是.sh脚本怎么写

思路就是先把需要更新的项目jar包在名字后面加上-new上传到文件目录中比如下面例子中是application-1.0-SNAPSHOT-new.jar,例子中文件目录是/data,然后把就是if判断是否有这个new的.jar包存在,不存在就不更新,存在就先备份原项目的jar包,名字后加上-org,然后把new的jar包替换项目jar包,最后停止项目,再重新启动项目,注意重新启动时一定要写上环境变量source /etc/profile 文件,因为使用crontab后它先找不到java,同样要写上 cd  /data,跳转到项目目录中再执行。

#!/bin/bash
APP_NAME_PRE=application-1.0-SNAPSHOT
APP_NAME_AFT=.jar
APP_NAME_ORG=$APP_NAME_PRE"-org"$APP_NAME_AFT
APP_NAME_NEW=$APP_NAME_PRE"-new"$APP_NAME_AFT
APP_NAME=$APP_NAME_PRE$APP_NAME_AFT

echo "检查是否有新的项目包"
cd /data
if [ -f $APP_NAME_NEW ]; then
	echo "有新的项目包"
	
	echo "开始备份原项目包"
	cp -f $APP_NAME $APP_NAME_ORG
	echo "完成备份原项目包"
	
	echo "覆盖原项目包"
	mv -f $APP_NAME_NEW $APP_NAME
	echo "完成覆盖原项目包"
	
	echo "开始停止项目"
	pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
	if [ "$pid"  ]; then
	  kill -9 $pid
	fi
	echo "停止项目成功"
	 
	sleep 1
	echo "开始启动项目"
	source /etc/profile #这个一定要写不然找不到java命令
	nohup java -Xmx1024m -Xms768m  -jar $APP_NAME   --spring.profiles.active=prd-china  &>nohup.out &
	echo "项目启动完成"
	 
	tail -f  nohup.out	
fi
echo "完成检查新的项目包"

你可能感兴趣的:(spring,boot,java,linux,crontab)