shell脚本启动jar包

#!/bin/bash

source /etc/profile
PROG_NAME=$0
ACTION=$1

usage() {
    echo "Usage: $PROG_NAME {start|stop|restart|status|tailf|backup|rollback}"
    exit 1;
}

# colors
red='\e[0;31m'
green='\e[0;32m'
yellow='\e[0;33m'
reset='\e[0m'

echoRed() { echo -e "${red}$1${reset}"; }
echoGreen() { echo -e "${green}$1${reset}"; }
echoYellow() { echo -e "${yellow}$1${reset}"; }

APP_HOME=$(cd $(dirname $0)/..; pwd)
app=admin.jar
cd $APP_HOME
mkdir -p logs

pidfile=logs/app.pid
logfile=logs/start.`date +%F`.log
JAVA_OPTS="-server.port=8881 -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -Xss256k"

bakdir="/data/ops/packages/app_bak"/admin
bakfile=$bakdir/admin`date +%F`.jar

function check_pid() {
    if [ -f $pidfile ];then
        pid=`cat $pidfile`
        if [ -n $pid ]; then
            running=`ps -p $pid|grep -v "PID TTY" |wc -l`
            return $running
        fi
    fi
    return 0
}

function start() {
    check_pid
    running=$?
    if [ $running -gt 0 ];then
        echoGreen "$app now is running already, pid=`cat $pidfile`"
        return 1
    fi

        nohup java -jar $JAVA_OPTS $app >> ${logfile} 2>&1 & pid=$!
 
    echoGreen "$app starting "
    for e in $(seq 10); do
        echo -n " $e"
        sleep 1
    done
    echo $pid > $pidfile
    check_pid
    running=$?
    if [ $running -gt 0 ];then
        echoGreen " ,pid=`cat $pidfile`"
        return 1
    else
        echoRed ",started fail!!!"
    fi
}

function stop() {
    pid=`cat $pidfile`
    kill -9 $pid
    echoRed "$app stoped..."
}

function restart() {
    stop
    sleep 1
    start
}

function backup(){

  if [ ! -x $bakdir ];then
    mkdir -p $bakdir

  fi

  if [ ! -f $bakfile ];then
        cp $app $bakfile
        echo $bakfile backup finish
  else
        echo $bakfile is already backup

  fi
}

function rollback(){

  if [ ! -f $bakfile ];then
        echo $bakfile backup not found
  else
        rm -f $app
        cp $bakfile $app
        echo $app rollback finish

  fi

}

function tailf() {
        tail -f $APP_HOME/$logfile
}

function status() {
    check_pid
    running=$?
    if [ $running -gt 0 ];then
        echoGreen "$app now is running, pid=`cat $pidfile`"
    else
        echoYellow "$app is stoped"
    fi
}

function main {
   RETVAL=0
   case "$1" in
      start)
         start
         ;;
      stop)
         stop
         ;;
      restart)
         restart
         ;;
      tailf)
         tailf
         ;;
      status)
         status
         ;;
      backup)
         backup
         ;;
      rollback)
         rollback
         ;;
      *)
         usage
         ;;
      esac
   exit $RETVAL
}

main $1

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值