#!/bin/bash
BUILD_ID=dontkillme
export JAVA_HOME=/home/jdk1.8.0_321
bash_source_name=${BASH_SOURCE[0]}
script_path=$(readlink -f "${bash_source_name}")
SERVICE_ROOT=$(dirname $script_path)
FILENAME=mobile-api.jar
SERVER_PORT=8987
new_release=$SERVICE_ROOT/new_release
LOG_DIR=$SERVICE_ROOT/logs
release_backup_dir=$SERVICE_ROOT/backup
timestamp=`date +%F-%H-%M-%S`
JAVA_PATH=/usr/local/java11/bin/java
mkdir -p $LOG_DIR
mkdir -p $release_backup_dir
stop () {
count=0
while [ 1 ]
do
sleep 3s
count=$(($count+1))
echo "Stop the service...[$count/4]"
if [ $count -gt 4 ];
then
echo "Stop service failed..."
exit 1
fi
ps aux | grep java | grep $SERVICE_ROOT/$FILENAME | awk '{print $2}' | xargs kill -9 &> /dev/null
if ps aux | grep java | grep $SERVICE_ROOT/$FILENAME;
then
continue
else
echo "Stop service successfully."
break
fi
done
}
start () {
boot_parameter_front=""
boot_parameter_behind="--server.port=${SERVER_PORT} --spring.profiles.active=stage,storage-stage,sms"
cd $SERVICE_ROOT
echo 'Start service....'
nohup $JAVA_PATH $boot_parameter_front -jar $SERVICE_ROOT/$FILENAME $boot_parameter_behind >> $LOG_DIR/nohup_${timestamp}.out 2>&1 &
}
restart () {
stop
sleep 2
start
}
deploy () {
stop
sleep 2
mv $SERVICE_ROOT/$FILENAME $release_backup_dir/${FILENAME}.$timestamp
if [[ $? -eq 0 ]];
then
echo ${FILENAME}.$timestamp >> $release_backup_dir/filename
fi
mv $new_release/$FILENAME $SERVICE_ROOT
start
}
rollback () {
stop
sleep 2
echo "delete the current datafiles..."
rm -f $SERVICE_ROOT/$FILENAME
if [[ ! -s $release_backup_dir/filename ]]
then
echo "Version file not exist..."
exit 1
fi
filename=`tail -1 $release_backup_dir/filename`
cp -r $release_backup_dir/$filename $SERVICE_ROOT/$FILENAME
if [ $? -ne 0 ]
then
echo "Recover data files failed."
exit 1
fi
echo "Recover from version ${filename}..."
start
}
case $1 in
start)
start;;
stop)
stop;;
deploy)
deploy;;
rollback)
rollback;;
*)
echo "Usage: $0 [start|stop|deploy|rollback]";;
esac
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2021-11-24 Shell脚本中判断字符串是否被包含在内并且使用grep 精确匹配
2021-11-24 获取Docker容器名称和ID
2021-11-24 K8s deployments的故障排查可视化指南已更新(2021 中文版)
2021-11-24 shell分割字符串并赋值给变量