sh脚本
#!/bin/bash
source /etc/profile
#脚本所在目录
SERVICE_DIR=$(cd $(dirname $0); pwd)
#代码所在目录
CODE_PATH=$SERVICE_DIR/code
echo "开始拉取最新代码 代码目录:$CODE_PATH"
cd $CODE_PATH
git checkout develop
git pull
echo "开始编译"
mvn clean install -Dmaven.test.skip=true
#maven编译后,jar包集合
JAR_DIR_ARRAY=($(find . -name *.jar))
for ((i=0; i<${#JAR_DIR_ARRAY[@]};i++)); do
echo 序号$i :${JAR_DIR_ARRAY[i]}
done
#选择的jar包下标
jar_index="$1";
#执行脚本前已经选了,就不再选,没选就在脚本执行中的时候 选择下jar包的下标
if [ ! -n "$jar_index" ]; then
read -p "请输入需要重启的jar 序号:" jar_index
echo "选择的下标为 $jar_index"
else
echo "选择的下标为 $jar_index"
fi
#jar的文件路径
JAR_DIR=${JAR_DIR_ARRAY[$jar_index]}
#jar的名称 举例:xxxx.jar
JAR_NAME=${JAR_DIR##*/}
#服务的名称 举例:xxxx
SERVICE_NAME=${JAR_NAME%%.*}
echo "开始备份jar"
NOW=`date +%Y%m%d%H%M`
cp -r $SERVICE_DIR/$JAR_NAME $SERVICE_DIR/$SERVICE_NAME$NOW.jar
echo "开始复制jar,从 $JAR_DIR 目录到 $SERVICE_DIR 目录"
cp -r $JAR_DIR $SERVICE_DIR/
echo "即将重启, $JAR_NAME"
cd $SERVICE_DIR
mkdir -p $SERVICE_DIR/../logs/$SERVICE_NAME
LOG_PATH=$SERVICE_DIR/../logs/$SERVICE_NAME/start.log
restart(){
echo "------------------------ ${JAR_NAME} 开始启动 ------------------------"
pid=`ps -ef | grep ${JAR_NAME} | grep -v grep |
awk '{print $2}'`
if [ -n "$pid" ]; then
echo $pid Manager
kill -9 $pid
if [ "$?" -eq 0 ]; then
echo "kill success"
else
echo "kill failed"
fi
fi
nohup java -jar ${JAR_NAME} --spring.profiles.active=test --server.port=10098 >> $LOG_PATH 2>&1 &
echo "------------------------ ${JAR_NAME} 开始完成 ------------------------"
echo "------------------------ 查看日志请执行:tail -f $LOG_PATH ------------------------"
tail -f $LOG_PATH
}
restart
网友评论