SHELL脚本控制服务启动

/*========================= startacct.sh =========================*/

#!/usr/bin/ksh

./vbsvr_boot_boss.sh -s ./boss_server.lst > vbsvr_boot_boss.log &

/*===================== vbsvr_boot_boss.sh =====================*/

#!/usr/bin/ksh

USER_NAME=`whoami`
PROGRAM_NAME=`basename $0`
CHECK_INTERVAL=15
SERVER_LIST=
SHUTDOWN_ALL_ON_EXIT=false
SERVER_RETRY_NUM=4
SERVER_START_INTERVAL=3
SERVER_SHUTDOWN_INTERVAL=1

DEBUG_LEVEL=0
INFO_LEVEL=1
ERROR_LEVEL=2
SYSTEM_LEVEL=3
LOG_LEVEL=$INFO_LEVEL

CHECK_OSAGENT=0
DRY_RUN=0
TOTAL_SERVER_NUM=0
PROCESSED_SERVER_NUM=0

#export LD_LIBRARY_PATH=/yzapp/opcrm/lib_rollback:$LD_LIBRARY_PATH

# parameters: message
log_debugMsg()
{
        if [ "$LOG_LEVEL" -le "$DEBUG_LEVEL" ]
        then
                echo "[ debug:" `date '+%y-%m-%d %H:%M:%S'` "] $1"
        fi
}

log_infoMsg()
{
        if [ "$LOG_LEVEL" -le "$INFO_LEVEL" ]
        then
                echo "[  info:" `date '+%y-%m-%d %H:%M:%S'` "] $1"
        fi
}

log_errorMsg()
{
        if [ "$LOG_LEVEL" -le "$ERROR_LEVEL" ]
        then
                echo "[ error:" `date '+%y-%m-%d %H:%M:%S'` "] $1"
        fi
}

log_sysMsg()
{
        if [ "$LOG_LEVEL" -le "$SYSTEM_LEVEL" ]
        then
                echo "[system:" `date '+%y-%m-%d %H:%M:%S'` "] $1"
        fi
}

# parameters: server_name, instance_num, server_parameters
check_format()
{
        if [ ! -s $1 ]
        then
                log_errorMsg "server $1 not found, in server list file $SERVER_LIST"
                exit 1
        fi
        TMP=`expr $2 + 1 - 1 2>/dev/null`
        if [ "$TMP" != "$2" ]
        then
                log_errorMsg "invalid instance_num($2), need a integer, in server list file $SERVER_LIST"
                exit 1
        fi
}

# parameters: server_name, instance_num, server_parameters
check_server()
{
        _SERVER_NAME=`basename $1`
        log_debugMsg "checking for server: $_SERVER_NAME [instance_num=$2, param=\"$3\"]"
        _INST_NUM=0
        _TRY_NUM=0
        while [ "$_TRY_NUM" -lt "$SERVER_RETRY_NUM" ]
        do
                if [ "$DRY_RUN" -eq "0" ]
                then
                        _INST_NUM=`ps -fu $USER_NAME | grep "/$_SERVER_NAME" | grep -v grep | wc -l | xargs expr 0 +`
                else
                        _INST_NUM=$2
                fi
#echo "server $_SERVER_NAME require $2 try $_TRY_NUM current $_INST_NUM"
                if [ "$_INST_NUM" -lt "$2" ]
                then
                        log_debugMsg "Starting server: $1 $3"
                        _LOG_FILE_BASE="$OB_REL/log/$_SERVER_NAME."`date +%H%M%S`
                        _COMMAND_LINE="$1 $3 1>/dev/null 2>/dev/null &"
                        #_COMMAND_LINE="$1 $3 1>$_LOG_FILE_BASE.stdout 2>$_LOG_FILE_BASE.stderr &"
                        log_infoMsg "Starting server with command line -- $_COMMAND_LINE"
                        eval $_COMMAND_LINE
                        sleep $SERVER_START_INTERVAL
                else
                        log_infoMsg "server $1 is OK, $_INST_NUM instance(s)"
                        PROCESSED_SERVER_NUM=`expr $PROCESSED_SERVER_NUM + $_INST_NUM`
                        export PROCESSED_SERVER_NUM
                        return
                fi
                _TRY_NUM=`expr $_TRY_NUM + 1`
        done
        log_errorMsg "server $1 failed $_TRY_NUM times, will start it later"
        PROCESSED_SERVER_NUM=`expr $PROCESSED_SERVER_NUM + $_INST_NUM`
        export PROCESSED_SERVER_NUM
}

# parameters: server_name
shutdown_server()
{
        _SERVER_NAME=`basename $1`
echo "shutdown _SERVER_NAME : $_SERVER_NAME"
        log_infoMsg "shutdowning server: $_SERVER_NAME"
        _TRY_NUM=0
        _INST_NUM=0
        while [ "$_TRY_NUM" -lt "$SERVER_RETRY_NUM" ]
        do
                _INST_NUM=`ps -fu $USER_NAME | grep "/$_SERVER_NAME" | grep -v grep | wc -l | xargs expr 0 +`
echo "shutdown _INST_NUM=$_INST_NUM _TRY_NUM=$_TRY_NUM"
                if [ "$_INST_NUM" -ge "1" ]
                then
                        if [ "$DRY_RUN" -eq "0" ]
                        then
                                ps -fu $USER_NAME | grep "/$_SERVER_NAME" | grep -v grep | awk '{ printf "kill %s\n", $2 }' | sh
                        else
                                _INST_NUM=0
                        fi
                        sleep $SERVER_SHUTDOWN_INTERVAL
                fi
                _TRY_NUM=`expr $_TRY_NUM + 1`
        done
echo "shutdown while done INST_NUM=$INST_NUM _TRY_NUM=$_TRY_NUM"
        if [ "$_INST_NUM" -ge "1" ]
        then
                log_errorMsg "shutdown server failed: $_SERVER_NAME, $_INST_NUM left alive"
                PROCESSED_SERVER_NUM=`expr $PROCESSED_SERVER_NUM + $_INST_NUM`
                export PROCESSED_SERVER_NUM
        else
                log_infoMsg "server shutdowned: $_SERVER_NAME"
        fi
        
}

# parameters: command
process_server()
{
         _TOTAL_SERVER_NUM=0
         #20090718 修改,新增参数_MAX_CONNETION_NUM用于读取最大连接数的配置
        while read _APPLICATION _INSTANCE_NUM _PORT_START _PORT_RANGE _MAX_CONNETION_NUM
        do
                _IS_COMMENT=`expr $_APPLICATION : '#\(.*\)'`
                if [ "$_IS_COMMENT" != "" ]
                then
                        continue
                fi
                if [ "$_INSTANCE_NUM" = "" ]
                then
                        _INSTANCE_NUM=1
                fi
                _TOTAL_SERVER_NUM=`expr $_TOTAL_SERVER_NUM + $_INSTANCE_NUM 2>/dev/null`
                _SERVER_NAME="${OB_REL}/svr/${_APPLICATION}_svr"
                #20090718 修改,改为读取公共配置模式
                
                _PARAMETER="-m $_APPLICATION -i ${OB_REL}/config/acct_config_2.cfg"
                
                if [ "$_MAX_CONNETION_NUM" = "2" ]
                then
                        _PARAMETER="-m $_APPLICATION -i ${OB_REL}/config/acct_config_2.cfg"
                fi
                
                if [ "$_MAX_CONNETION_NUM" = "10" ]
                then
                        _PARAMETER="-m $_APPLICATION -i ${OB_REL}/config/acct_config_10.cfg"
                fi
                
                if [ "$_MAX_CONNETION_NUM" = "20" ]
                then
                        _PARAMETER="-m $_APPLICATION -i ${OB_REL}/config/acct_config_20.cfg"
                fi
                
                if [ "$_MAX_CONNETION_NUM" = "30" ]
                then
                        _PARAMETER="-m $_APPLICATION -i ${OB_REL}/config/acct_config_30.cfg"
                fi
        
        
                if [ "$_MAX_CONNETION_NUM" = "0" ]
                then
                        _PARAMETER="-m $_APPLICATION -i ${OB_REL}/config/acct_config_30_DQ.cfg"
                fi      

                #增加boss动态服务加载
                if [ "$_MAX_CONNETION_NUM" = "acct" ]
                then
                        _PARAMETER="-m Dysvr_acct -i ${OB_REL}/config/acct_dysvr.cfg"
                fi
                
                export VBPORT=$_PORT_START
                export VBRANGE=$_PORT_RANGE
                export OB_ORB_INIT="dummy -Dvbroker.orb.propStorage=${OB_REL}/config/visibroker.prop -Dvbroker.se.iiop_tp.scm.iiop_tp.listener.port=${VBPORT} -Dvbroker.se.iiop_tp.scm.iiop_tp.listener.portRange=${VBRANGE}"
                if [ $1 = "check" ]
                then
                        check_server $_SERVER_NAME $_INSTANCE_NUM $_PARAMETER $_APPLICATION
                elif [ $1 = "shutdown" ]
                then
                        shutdown_server $_SERVER_NAME
                elif [ $1 = "check_format" ]
                then
                        check_format $_SERVER_NAME $_INSTANCE_NUM $_PARAMETER
                else
                        log_errorMsg "invalid option for process_server(): $1"
                        exit 1
                fi
        done < $SERVER_LIST
        TOTAL_SERVER_NUM=$_TOTAL_SERVER_NUM
}

# parameters:
on_exit()
{
        if $SHUTDOWN_ALL_ON_EXIT
        then
                log_sysMsg "shutdowning all servers..."
                PROCESSED_SERVER_NUM=0
                process_server "shutdown"
                if [ "$PROCESSED_SERVER_NUM" -eq "0" ]
                then
                        log_sysMsg "all servers shutdowned!"
                else
                        log_errorMsg "$PROCESSED_SERVER_NUM shutdowning down failed!"
                fi
        fi
        log_sysMsg "$PROGRAM_NAME terminated!"
        exit 1
}

# parameters:
show_usage()
{
        echo "$PROGRAM_NAME is a tool to boot and monitor OpenBroker server for VisiBroker"
        echo "Usage: $PROGRAM_NAME [-h] [-d] [-c interval] -s server_list"
        echo "  -c interval        check interval for monitoring, default is $CHECK_INTERVAL seconds"
        echo "  -s server_list     server_list file contains server information"
        echo "                     file format: server_path,instance_num,parameter"
        echo "  -d                 shutdown all servers when exit"
        echo "  -h                 show this help message"
}

# parameters:
check_env()
{
        ps -u $USER_NAME -f | grep "\<$PROGRAM_NAME\>" | grep -v grep 
        INSTANCE_NUM=`ps -u $USER_NAME -f | grep "\<$PROGRAM_NAME\>" | grep -v grep | wc -l | xargs expr 0 +`
        if [ "$INSTANCE_NUM" -ge "2" ]
        then
                log_errorMsg "there's $PROGRAM_NAME running already"
                exit 1
        fi

        if [ "$OB_REL" = "" ]
        then
                log_errorMsg "environment variable OB_REL not set, exit"
                exit 1
        else
                log_sysMsg "OB_REL=$OB_REL"
        fi

        if [ ! -d $OB_REL/log ]
        then
                log_errorMsg "log directory($OB_REL/log) not exists, exit"
                exit 1
        fi

        if [ $CHECK_OSAGENT -eq 1 ]
        then
                _OSAGENT_NUM=`ps -fu bes | grep osagent | grep $OSAGENT_PORT | grep -v grep | wc -l | xargs expr 0 +`
                if [ "$_OSAGENT_NUM" -eq "0" ]
                then
                        log_errorMsg "there's no osagent running on port $OSAGENT_PORT, exit"
                        exit 1
                else
                        log_sysMsg "$_OSAGENT_NUM osagent(s) running on port $OSAGENT_PORT"
                fi
        fi

        _TMP=`expr $CHECK_INTERVAL + 1 - 1 2>/dev/null`
        if [ "$_TMP" != "$CHECK_INTERVAL" ]
        then
                log_errorMsg "invalid check interval($CHECK_INTERVAL), need a integer"
                exit 1
        fi

        if [ "$SERVER_LIST" = "" ]
        then
                log_errorMsg "no server_list file, use -h to get help"
                exit 1
        fi

        if [ ! -s $SERVER_LIST ]
        then
                log_errorMsg "server_list file $SERVER_LIST not found"
                exit -2
        fi

        process_server "check_format"
}

# main part of script
while getopts :hdc:s: OPTION
do
        case $OPTION in
        h)      show_usage
                exit 0
        ;;
        d)      SHUTDOWN_ALL_ON_EXIT=true
        ;;
        c)      CHECK_INTERVAL=$OPTARG
        ;;
        s)      SERVER_LIST=$OPTARG
        ;;
        *)      log_errorMsg "invalid command option: $OPTARG"
                log_errorMsg "Use -h to get help"
                exit 1
        ;;
        esac
done

IFS=,
check_env

mkdir -p $OB_REL/svr/cores
#coreadm -p $OB_REL/svr/cores/core.%f.%p
#export LD_PRELOAD_32=$OB_REL/lib/libObPreload.so

trap "on_exit" 2 3 15 1>/dev/null 2>/dev/null

log_sysMsg "monitoring servers..."

while true
do
        PROCESSED_SERVER_NUM=0
        process_server "check"
        log_sysMsg "$TOTAL_SERVER_NUM server(s), $PROCESSED_SERVER_NUM active."

#20090718 修改 NG已经不需要再使用obtester服务


echo "sleep $CHECK_INTERVAL seconds..."
        sleep $CHECK_INTERVAL
done





/*========================= boss_server.lst =========================*/

#------------------------------------------------------------------------
#--通信端口请严格按照下面的原则进行分配,各个产品线在内部调整 
#------------------------------------------------------------------------
#修改,新增端口定义
#服务配置,端口 36001--38999
AccAuxMgnt,10,36021,10,0
AccBankReg,2,36041,10,2
AccCoinMgnt,3,36081,10,20
AccCreditMgnt,2,36091,10,10
AccDoubBack,2,36111,10,10
AccPayFee,6,36181,20,30
AccPrtInv,6,36211,10,30
AccQryFee,6,36221,10,30
AccQryFreeRes,2,36231,10,20
AccQuery,2,36241,10,30
AccQuickQryFee,3,36261,10,10
AccRefund,2,36271,10,10
AccTranBil,3,36331,10,2
AccUnpay,2,36351,10,10
AccVarsMgnt,2,36361,10,20
Config,3,36411,10,10
DetailQuery,3,36421,10,0
OweMgnt,2,36471,10,10
ServRefundCheck,2,36491,10,10
StopOpenMgnt,2,36511,10,10
Dysvr_acct,2,36521,10,acct
InfoMgnt,3,36481,10,10
AccOtherMgnt,2,36531,10,10





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
旅游社交小程序功能有管理员和用户。管理员有个人中心,用户管理,每日签到管理,景点推荐管理,景点分类管理,防疫查询管理,美食推荐管理,酒店推荐管理,周边推荐管理,分享圈管理,我的收藏管理,系统管理。用户可以在微信小程序上注册登录,进行每日签到,防疫查询,可以在分享圈里面进行分享自己想要分享的内容,查看和收藏景点以及美食的推荐等操作。因而具有一定的实用性。 本站后台采用Java的SSM框架进行后台管理开发,可以在浏览器上登录进行后台数据方面的管理,MySQL作为本地数据库,微信小程序用到了微信开发者工具,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得旅游社交小程序管理工作系统化、规范化。 管理员可以管理用户信息,可以对用户信息添加修改删除。管理员可以对景点推荐信息进行添加修改删除操作。管理员可以对分享圈信息进行添加,修改,删除操作。管理员可以对美食推荐信息进行添加,修改,删除操作。管理员可以对酒店推荐信息进行添加,修改,删除操作。管理员可以对周边推荐信息进行添加,修改,删除操作。 小程序用户是需要注册才可以进行登录的,登录后在首页可以查看相关信息,并且下面导航可以点击到其他功能模块。在小程序里点击我的,会出现关于我的界面,在这里可以修改个人信息,以及可以点击其他功能模块。用户想要把一些信息分享到分享圈的时候,可以点击新增,然后输入自己想要分享的信息就可以进行分享圈的操作。用户可以在景点推荐里面进行收藏和评论等操作。用户可以在美食推荐模块搜索和查看美食推荐的相关信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值