Linux 批處理 啓動Springboot程序

#!/bin/bash
#use function
#deploy [-o object_java_deploy_path] [-p point] [-b java_back_path] [-m spring.profiles.active] [-l log_path]  [-x Xms1024m] [-X Xmx1024m] [-e -XX:MaxMetaspaceSize=512m]   source_java_file_
#source_java_file is  required and required is root begin and jar end. example :/root/deploy/show.jar
#-o object_java_deploy_path default /opt/deploy/app/
#-l log_path default /opt/deploye/logs/

xms="-Xms1024m"
xmx="-Xmx1024m"
max_space_size="-XX:MaxMetaspaceSize=512m"



object_java_deploy_path=/opt/deploy/app
java_back_path=/opt/deploy/back
spring_profiles_active=prod
log_path=/opt/deploy/logs
jvm=
spring_boot_para=
point=

show_usage="args: [-o , -p , -m , -l , -s ,-x, -j ] source_java_file"

example="deploy-jar -o /home/test -p 8080 -X 512m -e 512m  -l /home/log -x 218m   /home/a.jar"

GETOPT_ARGS=`getopt -o o:p:m:l:s:x:X:e:j  -al object_java_deploy_path:,point:,spring_profiles_active:,log_path:,spring_boot_para:,xms:,xmx:,max_space_size:,jvm: -- "$@"`

eval set -- "$GETOPT_ARGS"

while [ -n "$1" ]
do
        case "$1" in
                -o|--object_java_deploy_path) object_java_deploy_path=$2; shift 2;;
                -p|--point) point=$2; shift 2;;
                -m|--spring_profiles_active) spring_profiles_active=$2; shift 2;;
                -l|--log_path) log_path=$2; shift 2;;
                -s|--spring_boot_para) spring_boot_para=$2; shift 2;;
                -b|--java_back_path) java_back_path=$2; shift 2;;
                -x|--xms) xms="-Xms"$2; shift 2;;
                -X|--xmx) xmx="-Xmx"$2; shift 2;;
                -e|--max_space_size) max_space_size="-XX:MaxMetaspaceSize="$2; shift 2;;
                -j|-jvm) jvm=$2; shift 2;;
                --)   break ;;
                *) echo $show_usage ; echo $example; break ;;
        esac
done

if [[ ! -d $object_java_deploy_path ]]; then
        mkdir   -p $object_java_deploy_path
fi
if [[ ! -d $log_path ]]; then
        mkdir -p $log_path
fi

java_file=${!#}
if [[ ! -e $java_file ]]; then
        echo  'java file is not fount please check'${java_file}
        exit
fi

java_file_name=${java_file##*/}

log_file=${log_path}/${java_file_name%.*}-`date +%Y%m%d%H`.log


if [[ `ps -ef | grep ${java_file_name} | grep -v grep |grep -v bash | wc -l` -ge 1 ]]; then
        pid=`ps -ef | grep ${java_file_name} | grep -v grep |grep -v bash| awk '{print $2}'`
        echo ${pid}
        kill -9 ${pid}
fi

if [[ ! -d $java_back_path ]]; then
        mkdir -p $java_back_path
fi
if [[ -e $object_java_deploy_path/$java_file_name ]]; then
        mv -f  ${object_java_deploy_path}/${java_file_name} ${java_back_path}/`date +%Y%m%d%H`-${java_file_name}
fi

mv ${java_file} ${object_java_deploy_path}

if [[ $point -ge 80 ]]; then
        point="--server.point="${point}
fi

if [[ ! -z $spring_profiles_active ]]; then
        spring_profiles_active="--spring.profiles.active="${spring_profiles_active}
fi

JAVA_HOME=/usr/local/java/jdk1.8.0_161




echo "nohup ${JAVA_HOME}/bin/java -jar ${jvm} ${xms} ${xmx} ${max_space_size}  ${object_java_deploy_path}/${java_file_name} ${point} ${spring_profiles_active} ${spring_boot_para} >${log_file} 2>&1  &"

nohup ${JAVA_HOME}/bin/java -jar ${jvm} ${xms} ${xmx} ${max_space_size}  ${object_java_deploy_path}/${java_file_name} ${point} ${spring_profiles_active} ${spring_boot_para} >${log_file} 2>&1  &

注意:使用前請檢查JAVA_HOME變量配置,需要使用本地的JAVA_HOME; 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章