#!/bin/bash if [ -n "$1" ]; then dm=$1 else dm='_r' fi if [ -n "$2" ]; then path=$2 else path=`pwd` fi curdoc=$(pwd|awk -F \/ '{print $NF}') while true; do sleep 8 datetime=`date "+%Y-%m-%d.%H:%M:%S"` ret=`ps x |grep $path/DBServer/dbserver$dm|grep -v grep|grep -v "/bin/bash"|wc -l` if [ $ret == 0 ]; then $path/DBServer/dbserver$dm $path/DBServer/DBServerLinux.txt > /dev/null & echo "[$datetime] $path/DBServer/dbserver$dm $path/DBServer/DBServerLinux.txt" fi ret=`ps x |grep $path/Gateway/gateway$dm|grep -v grep|grep -v "/bin/bash"|wc -l` if [ $ret == 0 ]; then $path/Gateway/gateway$dm $path/Gateway/GateWay.txt > /dev/null & echo "[$datetime] $path/Gateway/gateway$dm $path/Gateway/GateWay.txt" fi # check LogicServer ret=`ps x |grep $path/LogicServer/logicserver$dm|grep -v grep|grep -v "/bin/bash"|wc -l` if [ $ret == 0 ]; then $path/LogicServer/logicserver$dm $path/LogicServer/LogicServerLinux.txt > /dev/null & echo "[$datetime] $path/LogicServer/logicserver$dm $path/LogicServer/LogicServerLinux.txt" else pid=`top -bn 1 -i -c |awk '{ if (NR > 6) print }' |awk '{ if ($9 > 99) print $1}' |head -n1` if [[ -n $pid ]]; then echo "[$datetime] 开始结束服务器: $curdoc LogicServer (pid=$pid)" kill -15 $pid NUM=2 while true; do datetime=`date "+%Y-%m-%d.%H:%M:%S"` proc=`ps aux |grep $path|grep logicserver|grep -v grep|grep "\<$curdoc\>"|grep -v "/bin/bash"|wc -l` if [ $proc == 0 ]; then break fi if [ $NUM -lt 0 ]; then echo "[$datetime] 游戏服务 $curdoc LogicServer 强制结束" kill -9 $pid $path/LogicServer/logicserver$dm $path/LogicServer/LogicServerLinux.txt > /dev/null & echo "[$datetime] 游戏服务 $curdoc LogicServer 启动完毕" echo "--------------------------------------------------" break fi echo "[$datetime] 游戏服务 $curdoc LogicServer 结束中..." sleep 1 let NUM-- done fi fi #ret=`ps x |grep $path/LogicServer/robot$dm|grep -v grep|grep -v "/bin/bash"|wc -l` #if [ $ret == 0 ]; then #$path/LogicServer && ./robot$dm #echo "[$datetime] $path/LogicServer/robot$dm" #fi done