#!/bin/bash # Edit by ZeroC # 2020/03/13 eureka=/home/appuser/insurance/servers/application-insurance-discovery-server/application-insurance-discovery-server.jar discovery=application-insurance-discovery-server.jar env=dev # 参数检查及赋值 getParameter() { while [ -n "$1" ];do case $1 in --publicdir) if [ -n "$2" ];then # jar包临时存放目录 publicdir=$2 shift 2 else echo -e "\033[32m$1 not set! \033[0m" exit 1 fi ;; --basedir) if [ -n "$2" ];then # 项目根目录 basedir=$2 shift 2 else echo -e "\033[32m$1 not set! \033[0m" exit 1 fi ;; --project) if [ -n "$2" ];then # 应用名字 project=$2 shift 2 else echo -e "\033[32m$1 not set! \033[0m" exit 1 fi ;; --package) if [ -n "$2" ];then # 包名 package=$2 shift 2 else echo -e "\033[32m$1 not set! \033[0m" exit 1 fi ;; --option) if [ -n "$2" ];then # jar启动参数 option=$2 shift 2 else echo -e "\033[32m$1 not set! \033[0m" exit 1 fi ;; --proption) if [ -n "$2" ];then # 项目运行参数 proption=$2 shift 2 else echo -e "\033[32m$1 not set! \033[0m" exit 1 fi ;; *) echo -e "\033[32mParameter wrong! \033[0m" exit 1 ;; esac done if [ ! -n $publicdir ] || [ ! -n $basedir ] || [ ! -n $project ] || [ ! -n $package ];then echo -e "\033[32mpublicdir/basedir/project/package not set! \033[0m" exit 1 fi } # 检查并创建目录 dirIsExists() { if [ ! -d $1 ];then mkdir -p $1 fi } # 创建必要目录 mkDir() { # 配置文件目录 confdir=$basedir/prod_conf # 配置文件目录 appconfdir=$confdir/$project # 应用存放目录 projectdir=$basedir/$project # 过去版本存放目录 versionsdir=$projectdir/versions if [ ! -d "$appconfdir" ];then echo -e "\033[32mConfig directory not EXISTS! Please CHECK ! \033[0m" exit 1 fi dirIsExists $projectdir dirIsExists $versionsdir } # 移动到对应目录并创建软链接 lnSoft() { if [ -f $publicdir/$package ];then sign=`date +%Y%m%d-%H%M%S` projectname=`echo $package | awk -F'.' '{print $1}'` mv $publicdir/$package $versionsdir/$projectname-${sign}.jar find $versionsdir -name "$projectname-*.jar" -mtime +7 -exec rm -rf {} \; rm -rf $basedir/servers/$project/$package ln -s $versionsdir/$projectname-${sign}.jar $basedir/servers/$project/$package else echo -e "\033[32m$package not Found in $publicdir! \033[0m" exit 1 fi } # 启动jar文件 jarAction() { e_status=`ps aux | grep $discovery | grep -v grep | awk '{print $2}'` if [ -z $e_status ];then nohup java -jar $eureka > /dev/null 2>&1 & fi echo -e "\033[31mCreate soft Link!\033[0m" lnSoft echo -e "\033[31mStop $project if Exists! \033[0m" jar_status=`ps aux | grep $package |grep "java -jar" | grep -v grep | awk '{print $2}'` if [ -n '$jar_status' ];then kill -9 $jar_status > /dev/null 2>&1 fi echo -e "\033[31mStart $project Now! \033[0m" #cd $basedir/servers/$project && echo "nohup java -jar $package --spring.profiles.active=$env -Dspring.config.location=$appconfdir/application-${env}.yml > /dev/null 2>&1 &" | bash if [[ $option ]] && [[ $proption ]];then #cd $basedir/servers/$project && echo "nohup java -jar $option $package > /dev/null 2>&1 &" | bash cd $basedir/servers/$project && echo "nohup java -jar $option $package $proption > /dev/null 2>&1 &" | bash elif [[ $option ]] && [[ ! $proption ]];then cd $basedir/servers/$project && echo "nohup java -jar $option $package > /dev/null 2>&1 &" | bash elif [[ ! $option ]] && [[ $proption ]];then cd $basedir/servers/$project && echo "nohup java -jar $package $proption > /dev/null 2>&1 &" | bash else cd $basedir/servers/$project && echo "nohup java -jar $package > /dev/null 2>&1 &" | bash fi if [ -z '$jar_status' ];then echo -e "\033[32m$project start FAIL! \033[0m" exit 1 fi } main() { getParameter "$@" mkDir jarAction } source /home/appuser/.bash_profile main "$@"