run.sh部署快捷一步

run.sh实践


前言

我又回来了,今天先来个实用的脚本。
之前发过在linux上部署jar的相关细节,美中不足的是里面的脚本写的太简单,也不够智能,每次需要先kill,再start.现在奉上一个高级版本的启动脚本。


  • 一、使用步骤

run.sh如下:

#!/bin/bash
# chkconfig: 2345 90 10
# description: service control script

# config
DIR=/opt/deploy/bus/bus_info
JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_131
JRE_HOME=/usr/local/java/jdk/jdk1.8.0_131/jre

CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

DATE=$(date +%Y%m%d)
if [ ! -d $DIR/logs ];then
   mkdir -p $DIR/logs
fi
if [ ! -d $DIR/updateJarFile ];then
   mkdir -p $DIR/updateJarFile
fi
if [ ! -d $DIR/backup ];then
   mkdir -p $DIR/backup
fi
JARS=$(echo $DIR |awk -F'/' '{print $NF}')
JARFILE=$(ls ${DIR} |grep .jar$)
JARUPDATEFILE=$(ls ${DIR}/updateJarFile/ |grep .jar$)
JARUPDATEFILENUM=$(ls ${DIR}/updateJarFile/ |grep .jar$|wc -l)
PROFILE=dev
OUTFILE=out.log.${DATE}
PIDFILE=${DIR}/${JARS}.pid
LOGPATH=$DIR/logs
cd $DIR

start(){

  if [ ${JARUPDATEFILENUM} -eq 1 ]; then
    mv ${JARFILE}  backup/
    mv updateJarFile/${JARUPDATEFILE} .
	JARFILE=${JARUPDATEFILE}
  fi
  # config
  # -Dspring.profiles.active=$PROFILE 
  java -jar $DIR/$JARFILE > $LOGPATH/$OUTFILE 2>&1 /dev/null &
  new_pid=$!
  echo "$new_pid" > $PIDFILE
}

stop(){
  if [ -f $PIDFILE ]; then
    JPID=$(cat ${PIDFILE})
    if  [ "$JPID" != "" ];then
      kill -9 $JPID
      rm -rf  $PIDFILE
    fi  
  fi
}
		
CheckProcessStatus(){
  CPS_PID=$1
  if [ "$CPS_PID" != "" ] ;then
    CPS_PIDLIST=`ps -ef|grep $CPS_PID|grep -v grep|awk -F" " '{print $2}'`
  else
    CPS_PIDLIST=`ps -ef|grep "$JARFILE"|grep -v grep|awk -F" " '{print $2}'`
  fi

  for CPS_i in `echo $CPS_PIDLIST`
  do
    if [ "$CPS_PID" = "" ] ;then
      CPS_i1="$CPS_PID"
    else
      CPS_i1="$CPS_i"
    fi

    if [ "$CPS_i1" = "$CPS_PID" ] ;then
      kill -0 $CPS_i >/dev/null 2>&1
      if [ $? != 0 ] ;then
        echo "[`date`] JAVA $JARS: Process $i have Dead" kill -9 $CPS_i >/dev/null 2>&1
        return 1
      else
        return 0
      fi
    fi
  done
  echo "[`date`] JAVA $JARS: Process $CPS_i is not exists"
  return 1
}

status(){
  SPID=$(cat $PIDFILE)
  CheckProcessStatus $SPID >/dev/null
  if [ $? != 0 ];then
    echo "Java Process:{$SPID} Stopped ...."
  else
    echo "Java Process:{$SPID} Running Normal."
  fi

}

restart(){
  echo -e "Java stopping......."
  stop
  echo -e "Java starting......."
  start
}

case $1 in 
  start)
   start
  ;;
  stop)
   stop
  ;;
  restart | reload)
   restart
  ;;
  status)
   status
  ;;
  *)
   echo $"Usage: $0 {start|stop|restart|reload|status}"
   RETVAL=1 
esac
exit $RETVAL
  • 二、注意事项:

1.设置jdk所在位置
2.设置jar所在位置
3.自定义输出日志的前缀

如果需要将启动做成服务快捷操作可以执行以下(可选):
1、chmod +x run.sh
2、cp -a run.sh /etc/init.d/systemmanager
3、chkconfig --add systemmanager
4、chkconfig systemmanager on
5、systemctl start systemmanger
注:systemmanager是脚本名称,按需修改,最好按照业务进行修改,
如果设置失败需要删除 1.cd /etc/init.d/ 2. rm systemmanger即可。

具体使用:
1.第一次使用./run.sh start即可。
2.后续更新将jar放到updatefile目录就可以了

样例

总结

重复的工作能智能化,简单化提高的不仅是效率,还有工作的愉悦,集中精力放在提高效率上,而不是被琐事打扰。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值