shell:脚本启动相关

app.sh

#!/bin/sh
## java env
export JAVA_HOME=/opt/jdk1.8.0

SERVICE_NAME=servicename
JAR_NAME=$SERVICE_NAME-pkgvernum-RELEASE.jar
#PID  代表是PID文件
PID=/home/zhangyanfeng/microsvr/$SERVICE_NAME/$SERVICE_NAME.pid

#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh app.sh [start|stop|restart|status]"
    exit 1
}

#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq "0" ]; then 
    echo ">>> ${SERVICE_NAME} is already running PID=${pid} <<<" 
  else 
    nohup $JAVA_HOME/bin/java -Xms256m -Xmx512m -Djava.security.auth.login.config=./config/kafka_zoo_server_jaas.properties -jar $JAR_NAME >/dev/null 2>&1 &
    echo $! > $PID
    echo ">>> start $SERVICE_NAME successed PID=$! <<<" 
   fi
  }

#停止方法
stop(){
  #is_exist
  pidf=$(cat $PID)
  #echo "$pidf"  
  echo ">>> ${SERVICE_NAME} PID = $pidf begin kill $pidf <<<"
  kill $pidf
  rm -rf $PID
  sleep 2
  is_exist
  if [ $? -eq "0" ]; then 
    echo ">>> ${SERVICE_NAME} 2 PID = $pid begin kill -9 $pid  <<<"
    kill -9  $pid
    sleep 2
    echo ">>> $SERVICE_NAME process stopped <<<"  
  else
    echo ">>> ${SERVICE_NAME} is not running <<<"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo ">>> ${SERVICE_NAME} is running PID is ${pid} <<<"
  else
    echo ">>> ${SERVICE_NAME} is not running <<<"
  fi
}

#重启
restart(){
  stop
  start
}

cd /home/zhangyanfeng/microsvr/$SERVICE_NAME/
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac
exit 0

start.sh

#!/bin/sh
cd /home/
find ./ -maxdepth 1 -name "start*.log" -mtime +7 -exec rm {} \;
TODAY=`date +"%Y%m%d"`

getTimeStamp()
{
  echo `date +"%Y-%m-%d %H:%M:%S"`
}

log()
{
  echo " $1"
  echo "`getTimeStamp` : $1" >> /home/start-${TODAY}.log
}

MICRODIR=/home/zhangyanfeng/microsvr/zyf-service-user
CONFIGDIR=${MICRODIR}/config
TEMPLDIR=/etc/confd/templates
NOWTIME=`date +"%Y%m%d%H%M%S"`

init_confd()
{
   log "init confd ..."
   if [ ! -f ${TEMPLDIR}/application.tmpl ]
   then
      log "cp -af ${CONFIGDIR}/application.properties ${TEMPLDIR}/application.tmpl"
      cp -af ${CONFIGDIR}/application.properties ${TEMPLDIR}/application.tmpl
   else
      log "${TEMPLDIR}/application.tmpl is exist, ignore."
   fi 
   
   if [ ! -f ${TEMPLDIR}/bootstrap.tmpl ]
   then
      log "cp -af ${CONFIGDIR}/bootstrap.properties ${TEMPLDIR}/bootstrap.tmpl"
      cp -af ${CONFIGDIR}/bootstrap.properties ${TEMPLDIR}/bootstrap.tmpl
   else
      log "${TEMPLDIR}/bootstrap.tmpl is exist, ignore."
   fi 
   
   chmod 755 -R ${TEMPLDIR}
}

common_softlink()
{
   targetdir=$1
   sourcedir=$2
   
   if [ ! -d ${targetdir} ]
   then 
      mkdir -p ${targetdir}
      log "mkdir -p ${targetdir}"
   fi
   
   if [ -L ${sourcedir} ] 
   then
      log "rm ${sourcedir}"
      rm ${sourcedir}
   fi
   
   if [ -d ${sourcedir} ]
   then
      log "mv -f ${sourcedir} ${sourcedir}_${NOWTIME}"
      mv -f ${sourcedir} ${sourcedir}_${NOWTIME}
   fi
   
   ln -s ${targetdir} ${sourcedir}
   
   chmod 755 ${sourcedir}
   chown zxin10:root ${sourcedir}
   chmod -R 755 ${targetdir}
   chown -R zxin10:root ${targetdir}
}

init_softlink()
{
   UNAME=`uname -a`
   MICRONAME1=`echo $UNAME | cut -d ' ' -f 2`
   MICRONAME2=`echo $MICRONAME1 | cut -d '-' -f 1-3`
   log_dir=/home/log/$MICRONAME2/$MICRONAME1
   common_softlink "${log_dir}" "/home/zhangyanfeng/microsvr/zyf-service-user/logs" 
}

start_confd()
{
   log "start confd..."
   CONFDPID= `ps -ef|grep "confd"|grep -v grep|awk '{print $2}'`
   if [ -n "${CONFDPID}" ]
   then
      log "stop confd"
      kill -9 ${CONFDPID}
	  sleep 3
   fi
   
   ETCDCONFPATH="/home/zhangyanfeng/confdconfig/confd-general-config.conf"
   ETCD_SERVER_IP=`grep ETCD_SERVER_HOSTIP ${ETCDCONFPATH} | awk -F '=' '{print $2}'`
   ETCD_SERVER_PORT=`grep ETCD_SERVER_PORT ${ETCDCONFPATH} | awk -F '=' '{print $2}'`
   CONFD_SERVER=${ETCD_SERVER_IP}":"${ETCD_SERVER_PORT}
   
   log "/usr/bin/confd -interval 60 -backend etcd -node http://${CONFD_SERVER} &"
   /usr/bin/confd -interval 60 -backend etcd -node http://${CONFD_SERVER} &
}

function getConfigValue
{
    [ $# -ne 2 ] && echo  "function getConfigValue arguments error"
    local fileName=$1
    local key=$2
    echo `cat ${fileName}| grep "${key}"| grep "=" | awk -F= '{print $2}' | tr -d " "`	
}

function writeConfigValue()
{
    K8SCONFIGDIR=/home/zhangyanfeng/confdconfig
    K8SCONFIGFILE=${K8SCONFIGDIR}/confd-general-config.conf
    
    DBMASTURL=`getConfigValue ${K8SCONFIGFILE} pgconn | awk -F ',' '{print $1}'`
    DBSLAVEURL=`getConfigValue ${K8SCONFIGFILE} pgconn | awk -F ',' '{print $2}'`
    
    REDISURL=`getConfigValue ${K8SCONFIGFILE} redisconn`
    KAFKAURL=`getConfigValue ${K8SCONFIGFILE} kafkaconn`
    ZOOKEEPURL=`getConfigValue ${K8SCONFIGFILE} zkconn`
    IPSEGEMENT=`getConfigValue ${K8SCONFIGFILE} innernetworksegement`
	LIANCHUANGURL=`getConfigValue ${K8SCONFIGFILE} lianchuang_url`
    
    if [ -f ${CONFIGDIR}/application.properties ]
    then
      if [ -n ${IPSEGEMENT} ]
      then
        sed -i -e "/^genid/s/\/[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]./\/${IPSEGEMENT}./g" ${CONFIGDIR}/application.properties
      fi
          
      if [ -n ${ZOOKEEPURL} ]
      then
        sed -i -e "/^spring.cloud.stream.kafka.binder.zk-nodes/s/spring.cloud.stream.kafka.binder.zk-nodes=.*/spring.cloud.stream.kafka.binder.zk-nodes=${ZOOKEEPURL}/" ${CONFIGDIR}/application.properties
      fi
      
      if [ -n ${KAFKAURL} ]
      then
        sed -i -e "/^kafka.binder.brokers/s/kafka.binder.brokers=.*/kafka.binder.brokers=${KAFKAURL}/" ${CONFIGDIR}/application.properties
        sed -i -e "/^spring.cloud.stream.kafka.binder.brokers/s/spring.cloud.stream.kafka.binder.brokers=.*/spring.cloud.stream.kafka.binder.brokers=${KAFKAURL}/" ${CONFIGDIR}/application.properties
      fi
	  
	  if [ -n ${LIANCHUANGURL} ]
      then
		BRFOREVALUE=`getConfigValue ${CONFIGDIR}/application.properties lianchuang.url`
		BRFORE=${BRFOREVALUE#*//}
		sed -i "s/${BRFORE}/${LIANCHUANGURL}/g" ${CONFIGDIR}/application.properties
      fi
    fi
    
    if [ -f ${CONFIGDIR}/bootstrap.properties ]
    then
      if [ -n ${IPSEGEMENT} ]
      then
        sed -i -e "/^eureka.client.serviceUrl.defaultZone/s/\/[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]./\/${IPSEGEMENT}./g" ${CONFIGDIR}/bootstrap.properties
      fi
    fi
}

==============  MAIN FUNCTION  ===============
init_softlink
#init_confd
#start_confd
writeConfigValue

cd ${MICRODIR}
log "${MICRODIR}/app.sh restart"
${MICRODIR}/app.sh restart
export TERM=linux
/usr/sbin/sshd -D
发布了52 篇原创文章 · 获赞 15 · 访问量 133万+

猜你喜欢

转载自blog.csdn.net/xiaofeng10330111/article/details/88667231