linux 多jetty启动脚本

这个脚本是通过命令的方式来启动不同的jetty


假设这个文件名为jetty-root.sh 放在/home/chris 下 我们可以通过ln命令设置快捷方式jj

ln -s /home/chris/jetty-root.sh /usr/bin/jj


/data/app/jetty-chris 的启动命令为 jj start chris  停止命令为 jj stop chris  查看日志jj logf chris

/data/app/jetty-hudson 的启动命令为 jj start hudson 停止命令为 jj stop hudson  查看日志jj logf hudson


#!/bin/bash

ME=`basename $0`
ArgCount=$#
# 启动命令 stop | start | log | logn | logf
CMD=$1
# 启动jetty的唯一标识 目录如果为jetty-chris则启动这个jetty 使用  start chris
KEY=$2
NOWDAY=`date +%Y`_`date +%m`_`date +%d`
WHO=`whoami`

if [ ! $ArgCount -eq 2 ]; then
  echo "    Arg count must be 2"
  echo "        {stop | start | log | logn | logf} {key}"
  echo "        log is cat log file"
  echo "        logn is tail log file last 1000 line"
  echo "        logf is tail -f log file"
  exit
fi

if [ $CMD != "start" -a $CMD != "stop" -a $CMD != "log" -a $CMD != "logf" -a $CMD != "logn" ]; then
  echo "arg 1 must be start or stop or log or logf or logn"
  exit
fi
#要同时启动多个jetty 要修改对应jetty.xml的端口 避免出现端口相同的情况
XMLFILE="/data/app/jetty-$KEY/etc/jetty.xml"

echo -n "XML file $XMLFILE"
if [ -f "$XMLFILE" ]; then
    echo " is exist."
else
    echo " is NOT exist!"
    exit
fi


JAVA_HOME=/data/app/java
CLASSPATH=/data/app/java/lib/dt.jar:/data/app/java/lib/tools.jar
export JAVA_HOME CLASSPATH
export LANG=zh_CN.UTF-8


export JETTY_HOME=/data/app/jetty-$KEY
export JETTY_RUN=/data/app/jetty-$KEY/logs
export JETTY_LOGS=/data/app/jetty-$KEY/logs
export JETTY_ARGS=/data/app/jetty-$KEY/etc/jetty-logging.xml
export JAVA_OPTIONS='-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:PermSize=64M -XX:MaxPermSize=128M -Xmx2048m -DOPTIONS=server'
PIDCOUNT=`ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME | awk '{print $2}' | wc -l`
LOGFILE=`ls -t $JETTY_HOME/logs/*.stderrout.log | awk 'NR==1'`


case $CMD in
        logf)
          tail -f $LOGFILE
        ;;
        logn)
          tail -n1000 $LOGFILE
        ;;
        log)
          more $LOGFILE
        ;;
        start)

          if [ "$PIDCOUNT" -gt 1 -o "$PIDCOUNT" -eq 1 ]; then
              echo "There are too many process :"
              ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME
              exit 1
          fi
          if [ "$PIDCOUNT" -eq 0 ]; then
              echo "Let's start it......"
              /data/app/jetty-$KEY/bin/jetty.sh start
              sleep 1
              echo "It's stared"
              exit 0
          fi
        ;;
        stop)
          if [ "$PIDCOUNT" -gt 1 ]; then
              echo "There are too many process :"
              ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME 
              exit 1
          fi

          if [ "$PIDCOUNT" -eq 0 ]; then
              echo "It had been down!"
              exit 1
          fi

          if [ "$PIDCOUNT" -eq 1 ]; then
              echo "Let's stop it......"
              PID=`ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME | awk '{print $2}'`
              kill $PID
              echo "Sending STOP ... Waiting ..."

              for i in {60..0}; do
                  PIDCOUNT=`ps -ef | grep "jetty-$KEY" | grep -v 'grep' |  grep -v $ME | awk '{print $2}' | wc -l`
                  if [ "$PIDCOUNT" -eq 1 ]; then
                      echo "It's running yet...$i"
                      sleep 1
                  else
                      echo "$JettyHome has been down"
                      exit
                  fi
              done

              PIDCOUNT=`ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME |  awk '{print $2}' | wc -l`
              if [ "$PIDCOUNT" -eq 1 ]; then
                  PID=`ps -ef | grep "jetty-$KEY" | grep -v 'grep' | grep -v $ME | awk '{print $2}'`
                  kill -9 $PID
                  echo "Force to kill -9 pid:$PID"
                  echo "sleep 5 second"
                  sleep 5
                  echo "$PID has been down"
                  exit
              fi

          fi


        ;;
esac

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值