作为服务器开发人员,GO语言内网测试数据及调试肯定很简单,如果你在Windows下开发 直接编成EXE执行就可以,然后部署外网在打包成linux的执行文件(交叉编译);但是对于在Linux下部署,也是后台我们开发人员必须掌握的技术。很简答,看下就会了: 假如我们打算开启大厅服务器,执行文件的名字:HallServer
以下脚本和文件是部署的组合
-----------------------------------------------------------------------------
mod.txt存执行文件的名字
HallServer
-----------------------------------------------------------------------------
clear_all_shm.sh文件内容:
for id in `ipcs -m|awk '{if($6 == 0){print $2}}'`
do
ipcrm -m $id
done
-----------------------------------------------------------------------------
NameConfig.sh文件内容:
#!/bin/sh
MainSvrName=HallServer
StopSvr()
{
if
ps -ef | grep $1 | grep $2 | grep -v grep
then
PROCESSID=`ps -ef | grep $1 | grep $2 | grep -v grep | awk '{print \$2}'`
echo "Try to tell $1 to Stop. Pid: $PROCESSID"
kill -s SIGUSR2 $PROCESSID
fi
for ((i = 0; i < 10; i++));
do
if
ps -ef | grep $1 | grep $2 | grep -v grep
then
sleep 1
else
break
fi
done
if
ps -ef | grep $1 | grep $2 | grep -v grep
then
echo "Stop $1 Fail. Force To stop? Input You Choice:[Y/N]"
read UserInput
if [ $UserInput = 'Y' ] || [ $UserInput = 'y' ]
then
echo "kill -9 $1"
echo "ps -ef | grep $1 | grep $2 | grep -v grep | awk '{print \$2}'"
PROCESSID=`ps -ef | grep $1 | grep $2 | grep -v grep | awk '{print \$2}'`
kill -9 $PROCESSID
else
echo "Do Nothing"
fi
else
echo "Stop $1 Finish"
fi
}
StopSvrDontAsk()
{
if
ps -ef | grep $1 | grep $2 | grep -v grep
then
PROCESSID=`ps -ef | grep $1 | grep $2 | grep -v grep | awk '{print \$2}'`
echo "Try to tell $1 to Stop. Pid: $PROCESSID"
kill -s SIGUSR2 $PROCESSID
fi
for ((i = 0; i < 30; i++));
do
if
ps -ef | grep $1 | grep $2 | grep -v grep
then
sleep 1
else
break
fi
done
if
ps -ef | grep $1 | grep $2 | grep -v grep
then
PROCESSID=`ps -ef | grep $1 | grep $2 | grep -v grep | awk '{print \$2}'`
kill -9 $PROCESSID
else
echo "Stop $1 Finish"
fi
}
-----------------------------------------------------------------------------
restart_all.sh文件内容:
./stop_all.sh
sleep 5
./start_all.sh
-----------------------------------------------------------------------------
start_all.sh文件内容:
ulimit -c unlimited
# sudo sysctl -w kernel.shmmax=4000000000
OLDPWD=`pwd`
while read d c
do
cd ./bin && ./$d &
cd -
sleep 3
done<mod.txt
-----------------------------------------------------------------------------
status.sh文件内容:
#!/bin/sh
. ./conf/NameConfig.sh
WHO=`whoami`
ps -ef | grep $MainSvrName | grep $WHO | grep -v grep
-------------------------------------------------------------------------------
stop_all.sh文件内容:
ps -ef|grep Hall|grep -v grep|awk '{print $2}'|xargs kill -9
sleep 3
./clear_all_shm.sh