SringCloud的服務部署腳本(支持全體部署,支持單一部署)

1、jar包構建過程略(推薦使用jenkins)
2、保證所有的jar包都有權限

chmod 777 存放JAR包文件夾/*

3、shell文件分成了三個:共通common.sh、全體部署:rcyj_all.sh、單一部署:rcyj.sh,全體和單一shell調用共通shell的函數,實現功能

共通common.sh

#!/bin/bash

stopFun(){
	jarName=$1
	retCode=1 #1:stop success,0:stop fail
 
	tpid=`ps -ef | grep $jarName | grep -v grep | grep -v kill | awk '{print $2}'`
	if [ ${tpid} ]
	then
		kill -15 $tpid
	fi

	sleep 5

	tpid=`ps -ef | grep $jarName | grep -v grep | grep -v kill | awk '{print $2}'`
	if [ ${tpid} ]
	then
		kill -9 $tpid
	fi

	tpid=`ps -ef | grep $jarName | grep -v grep | grep -v kill | awk '{print $2}'`
	if [ ${tpid} ]
	then
		#rm -f tpid
		return 0
	fi 
	return 1
}

startFun(){
	jarName=$1
	retCode=1 #1:start success,0:start fail

	nohup java -jar -Xms100m -Xmx500m -XX:PermSize=128M -XX:MaxPermSize=256M -Dspring.profiles.active=${active} "./jar/rcyj-${jarName}.jar" >> ./logs/nohup.out 2>&1 &
	if [ `expr match $jarName ".*eureka.*"` -ge 6 ]
	then
		sleep 9
	else
		sleep 5
	fi

	tpid=`ps -ef | grep $jarName | grep -v grep | grep -v kill | awk '{print $2}'`
	if [ -z ${tpid} ]
	then
		return 0
	fi

	return 1
}

單一部署shell

#!/bin/bash
. ./common.sh

opt_type=$1

case $opt_type in
	'start')
		echo -n "please input task eureka,config-0.0.1-SNAPSHOT,gateway,system,auth,gen :"
		read jarName

                startFun $jarName
		if [ $? -eq 1 ]
		then
			echo $jarName'----------------start success!'
		else
			echo $jarName'----------------start fail!'
			exit 1
		fi
	;;
	'restart')
		echo -n "please input task eureka,config :"
		read jarName
		
                stopFun $jarName
		if [ $? -eq 1 ]
		then
			echo $jarName'----------------stop success!'
		else
			echo $jarName'----------------stop fail!'
			exit 1
		fi
                		
                startFun $jarName
		if [ $? -eq 1 ]
		then
			echo $jarName'----------------start success!'
		else
			echo $jarName'----------------start fail!'
			exit 1
		fi
	;;
	'stop')
		echo -n "please input task eureka,config :"
		read jarName
		
                stopFun $jarName
		if [ $? -eq 1 ]
		then
			echo $jarName'----------------stop success!'
		else
			echo $jarName'----------------stop fail!'
			exit 1
		fi
	;;
	*)
		echo 'please input opt_type : start,restart,stop'
	;;
esac

全體部署shell

#!/bin/bash
. ./common.sh
jarNames[0]='eureka'
jarNames[1]='config-0.0.1-SNAPSHOT'
jarNames[2]='gateway'
jarNames[3]='system'
jarNames[4]='auth'
jarNames[5]='gen'
#jarNames[6]='dfs'

opt_type=$1

case $opt_type in
	'start')	
		for jarName in ${jarNames[@]}
		do
			startFun $jarName
			if [ $? -eq 1 ]
			then
				echo $jarName' ----------------start success!'
			else
				echo $jarName' ----------------start fail!'
			fi
		done
	;;
	'restart')
		i=${#jarNames[@]}
		let i--
		while [ $i -ge 0 ]
		do
			stopFun ${jarNames[$i]}
			if [ $? -eq 1 ]
			then
				echo ${jarNames[$i]}' ----------------stop success!'
			else
				echo ${jarNames[$i]}' ----------------stop fail!'
			fi
			let i--
		done
		
		for jarName in ${jarNames[@]}
		do
			startFun $jarName
			if [ $? -eq 1 ]
			then
				echo $jarName' ----------------start success!'
			else
				echo $jarName' ----------------start fail!'
			fi
		done
	;;
	'stop')
		i=${#jarNames[@]}
		let i--
		while [ $i -ge 0 ]
		do
			stopFun ${jarNames[$i]}
			if [ $? -eq 1 ]
			then
				echo ${jarNames[$i]}' ----------------stop success!'
			else
				echo ${jarNames[$i]}' ----------------stop fail!'
			fi
			let i--
		done
	;;
	*)
		echo 'please input opt_type : start,restart,stop'
	;;
esac

4、使用方法

sh rcyj.sh start/restart/stop
sh rcyj_all.sh start/restart/stop
發佈了91 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章