#!/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;