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