#!/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