一、shell脚本,自动发布jar
1、先创建一个fb.sh脚本文件。
2、将jar放入发版目录下,执行脚本后会自动扫描该目录下的所有jar
3、选择你要发版的项目
#! /bin/bash
# 脚本第一次创建后需要执行的操作
# sudo chmod 777 fb.sh && sed 's/\r//' -i fb.sh
# 定义相关变量
time="`date +%Y-%m-%d-%H%M`"
backupsTime=""
jarName=""
logName=""
files=()
count=0
length=0
javaPath=/opt/jdk1.8.0_11/bin/java
fbPath=/root/fb/
projectPath=/opt/sale_marketing/
menu(){
echo -e "************************************MENU************************************\n"
cd $fbPath
for i in `ls *.jar`;do
files[${count}]=${i}
((count++))
done
length=${#files[@]}
for((i=0;i<length;i++));do
echo "************* $i ${files[i]} *************"
done
}
chooes(){
read -p "请输入您需要发版的项目: " number
isInt $number $length
jarName=${files[number]}
arr=(${jarName//-/ })
logName=${arr[1]}".log"
}
isExist(){
if [ ! -f $fbPath$jarName ]; then
echo "----------- "$fbPath$jarName" 文件不存在,已退出 ----------"
exit 0
fi
}
killProcess(){
echo "----------------- 杀死进程 start -----------------"
# 查询项目对应的pid
webPid=$(ps -ef|grep $jarName |grep -v grep | awk '{print $2}')
# 当"$webPid"非空的时候,为true
if [ -n "$webPid" ];then
kill -9 $webPid
echo "----------------- 杀死进程 end -----------------"
else
echo "没有找到该项目的进程-----------------"
fi
}
delete(){
echo "----------------- 删除上次备份 start -----------------"
rm $projectPath$jarName.bak*
echo "------------------- 删除上次备份 end -----------------"
}
backups(){
echo "----------------- 备份 start -----------------"
backupsTime=$(ls --full-time $projectPath$jarName | awk '{print $6,$7}' | sed s/://g | sed s/[[:space:]]/-/g)
backupsTime=${backupsTime: 0 :17}
echo "----------------- 上次项目时间 ${backupsTime} -----------------"
cp $projectPath$jarName $projectPath$jarName.bak-${backupsTime}
echo "------------------- 备份 end -----------------"
}
copy(){
echo "----------------- 复制项目 start -----------------"
cp $fbPath$jarName $projectPath
echo "----------------- 复制项目 end -----------------"
}
deploy(){
echo "----------------- 部署jar start -----------------"
nohup $javaPath -jar $projectPath$jarName>>$projectPath$logName &
echo "----------------- 部署jar end -----------------"
}
seeLog(){
echo "----------------- 查看日志 -----------------"
tail -f $projectPath$logName
}
# 校验输入的参数是否为整数 获取第一个参数 $1
isInt(){
expr $1 "+" 10 &> /dev/null
if [ $? -eq 0 ];then
if [ $1 -lt 0 ] || [ $1 -ge $2 ]; then
echo ""$1"不在下标范围内,正在退出系统"
exit 0
fi
else
echo ""$1" not number,正在退出系统"
exit 0
fi
}
menu
chooes
isExist
echo "----------------- "$time"开始发版"$jarName"-----------------"
killProcess
delete
backups
copy
deploy
seeLog
注:
1、脚本是在Windows下写的,Windows和Linux的换行符号不同,所以在Linux中执行脚本的时候报错。 需要执行
sed 's/\r//' -i fb.sh
2、脚本授权
sudo chmod 777 fb.sh
3、脚本执行之后,可以通过查看进程,验证程序是否运行成功
ps -ef|grep sale-gate-1.0-SNAPSHOT.jar
二、shell脚本,自动发布vue前端
#! /bin/bash
# 脚本第一次创建后需要执行的操作
# sudo chmod 777 fb-web.sh && sed 's/\r//' -i fb-web.sh
# 定义相关变量
time="`date +%Y-%m-%d-%H%M`"
backupsTime=""
webName=""
zipName=dist.zip
fbPath=/root/fb/
projectPath=/opt/sale_marketing/webs/
menu(){
echo -e "************************************MENU************************************\n"
echo "************* 0 marketing *************"
echo "************* 1 znyx_marketing *************"
}
chooes(){
read -p "请输入您需要发版的项目: " number
case $number in
0) webName="marketing"
;;
1) webName="znyx_marketing"
;;
*) echo '您的输入有误,已退出'
exit 0
;;
esac
}
isExist(){
if [ ! -f $fbPath$zipName ]; then
echo "----------- "$fbPath$zipName" 文件不存在,已退出 ----------"
exit 0
fi
}
delete(){
echo "----------------- 删除上次项目 start -----------------"
cd $projectPath
rm $zipName.bak*
rm -rf $webName*
echo "------------------- 删除上次项目 end -----------------"
}
backups(){
echo "----------------- 备份 start -----------------"
backupsTime=$(ls --full-time $zipName | awk '{print $6,$7}' | sed s/://g | sed s/[[:space:]]/-/g)
backupsTime=${backupsTime: 0 :17}
echo "----------------- 上次项目时间 ${backupsTime} -----------------"
cp $zipName $zipName.bak-$backupsTime
echo "----------------- 备份 end -----------------"
}
deploy(){
echo "----------------- 部署web start -----------------"
cp $fbPath$zipName ./
unzip $zipName -d $webName
echo "----------------- 部署web end -----------------"
}
menu
chooes
isExist
delete
backups
deploy