#!/bin/bash cd $(cd "$(dirname "$0")" && pwd) echo "======================【停止】========================" path=`pwd` datetime=`date "+%Y-%m-%d.%H:%M:%S"` curdoc=$(pwd|awk -F \/ '{print $NF}') daemon_pid=`ps aux |grep $path|grep daemon.sh|grep -v grep|awk '{print $2}'` if [[ -n $daemon_pid ]]; then echo "结束守护进程:$path daemon.sh" kill -15 $daemon_pid fi #关闭网关 pid=`ps aux |grep $path|grep gateway|grep -v grep|grep "\<$curdoc\>"|grep -v "/bin/bash"|awk '{print $2}'` if [[ -n $pid ]]; then echo "开始结束服务器: gateway (pid=$pid)" kill -15 $pid NUM=10 while true; do datetime=`date "+%Y-%m-%d.%H:%M:%S"` proc=`ps aux |grep $path|grep gateway|grep -v grep|grep "\<$curdoc\>"|grep -v "/bin/bash"|wc -l` if [ $proc == 0 ]; then break fi if [ $NUM -lt 0 ]; then kill -9 $pid echo $datetime" 游戏服务 "$path" gateway 强制结束" break fi echo $datetime" 游戏服务 "$path" gateway 结束中..." sleep 1 let NUM-- done echo "已结束服务器: gateway" fi #关闭其他服 arr_srv="logicserver dbserver robot" for srv in ${arr_srv[@]}; do pid=`ps aux |grep $path|grep $srv|grep -v grep|grep "\<$curdoc\>"|grep -v "/bin/bash"|awk '{print $2}'` if [[ -n $pid ]]; then echo "开始结束服务器: $srv (pid=$pid)" kill -15 $pid NUM=10 while true; do datetime=`date "+%Y-%m-%d.%H:%M:%S"` proc=`ps aux |grep $path|grep $srv|grep -v grep|grep "\<$curdoc\>"|grep -v "/bin/bash"|wc -l` if [ $proc == 0 ]; then break fi if [ $NUM -lt 0 ]; then kill -9 $pid echo $datetime" 游戏服务 "$path" "$srv" 强制结束" break fi echo $datetime" 游戏服务 "$path" "$srv" 结束中..." sleep 1 let NUM-- done echo "已结束服务器: $srv" fi done exit 0