Files
2025-02-20 15:22:11 +08:00

50 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
if [ -n "$1" ]; then
dm=$1
else
dm='_r'
fi
if [ -n "$2" ]; then
path=$2
else
path=`pwd`
fi
# check LogicServer
while true; do
sleep 8
datetime=`date "+%Y-%m-%d.%H:%M:%S"`
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
done