#!/bin/bash
#初始化服务器的进程PId变量
user_pid=0;
robot_pid=0;
loadlort_pid=0;
gateway_pid=0;
#########
#检查相关服务器是否启动成功
#说明:
#使用JDK自带的JPS命令及grep命令组合,准确查找pid
#jps 加 l 参数,表示显示java的完整包路径
#使用awk,分割出pid ($1部分),及Java程序名称($2部分)
############
check_is_start(){
for((i=1;i<10;i++));do
temp_javaps=`$JAVA_HOME/bin/jps -l | grep $1`;
if [ -n "$temp_javaps" ]; then
temp_pid=`echo $temp_javaps | awk '{print $1}'`;
if [ "$temp_pid" -eq 0 ];then
echo "$2 service start failure";
exit 0;
else
echo "$2 service is starting......";
fi
else
echo "$2 service start failure";
exit 0;
fi
sleep 3;
done
temp_javaps=`$JAVA_HOME/bin/jps -l | grep $1`;
if [ -z "$temp_javaps" ];then
echo "$2 service start failure";
exit 0;
fi
temp_pid=`echo $temp_javaps | awk '{print $1}'`;
if [ "$temp_pid" -eq 0 ] ; then
echo "$2 service start failuret";
[[ -z $(lsof -i:$3) ]]&&echo "port is not linster"||echo "port is linster"
exit 0;
else
echo "$2 service start succeed";
fi
}
#########
#停止服务器
#########
stop_service(){
temp_javaps=`$JAVA_HOME/bin/jps -l | grep $1`;
if [ -n "$temp_javaps" ]; then
temp_pid=`echo $temp_javaps | awk '{print $1}'`;
if [ "$temp_pid" -eq 0 ];then
echo "$1 service is not starting......";
else
su - root -c "kill -15 $temp_pid"
echo "$1 stop already"
fi
fi
}
###################################
#启动服务器
###################################
start(){
###################################
#启动用户服务器
#
#检查用户服务器是否启动成功
#监听端口6664
###################################
cd user;
./start.sh;
check_is_start server-user-0.0.1-SNAPSHOT.jar user 6664;
###################################
#启动机器人服务器
#
#启动之后调用check_is_start 检查是否启动成功
#监听端口6664
###################################
cd ../robot;
./start.sh;
check_is_start server-robot-0.0.1-SNAPSHOT.jar robot 6656;
###################################
#启动斗地主服务器
#
#启动之后调用check_is_start 检查是否启动成功
#监听端口6664
###################################
cd ../loadlort;
./start.sh;
check_is_start server-game-0.0.1-SNAPSHOT.jar game 6668;
###################################
#启动网管服务器
#
#启动之后调用check_is_start 检查是否启动成功
#监听端口6664
###################################
cd ../gateway;
./start.sh;
check_is_start server-gateway-0.0.1-SNAPSHOT.jar gateway 9092;
}
###################################
#停止服务器
###################################
stop(){
stop_service server-gateway-0.0.1-SNAPSHOT.jar;
stop_service server-robot-0.0.1-SNAPSHOT.jar;
stop_service server-user-0.0.1-SNAPSHOT.jar;
stop_service server-game-0.0.1-SNAPSHOT.jar;
}
###################################
#读取脚本的第一个参数($1),进行判断
#参数取值范围:{start|stop|restart|status|info}
#如参数不在指定范围之内,则打印帮助信息
###################################
case "$1" in
'start')
start
;;
'stop')
stop
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0