linux下编译mangos,Linux下MANGOS服务端自动重启Shell启动脚本
下面是一个Linux下支持的一个启动服务端的Shell代码。可以实现服务端当机后自动重新启动。
同时可以支持LINUX下用GDB对mangos进行当机调试,输出结果到crashes/Server.log ??
你需要根据你的魔兽私服单机版在Linux中的路径调整下面的文件
#! /bin/bash
THIS_FULLPATH=$(cd `dirname "${BASH_SOURCE[0]}"` && pwd -P)/`basename "${BASH_SOURCE[0]}"`
THIS_FOLDERPATH=$(cd `dirname "${BASH_SOURCE[0]}"` && pwd -P)
APATH=/home/mangos/mangos-server/bin
WPATH=/home/mangos/mangos-server/bin
ASRV_BIN=realmd #This usually doesnt change. TrinityCore: authserver MaNGOS: realmd ArcEmu: whocares?
WSRV_BIN_ORG=mangosd #This usually doesnt change. TrinityCore: worldserver MaNGOS: mangosd ArcEmu: whocares?
WSRV_BIN=mangosd
WSRV_SCR=mangosd
echo "run" > gdbcommands
echo "shell echo -e \" CRASHLOG BEGIN \"" >> gdbcommands
echo "info program" >> gdbcommands
echo "shell echo -e \" BACKTRACE \"" >> gdbcommands
echo "bt" >> gdbcommands
echo "shell echo -e \" BACKTRACE FULL \"" >> gdbcommands
echo "bt full" >> gdbcommands
echo "shell echo -e \" THREADS \"" >> gdbcommands
echo "info threads" >> gdbcommands
echo "shell echo -e \" THREADS BACKTRACE \"" >> gdbcommands
echo "thread apply all bt full" >> gdbcommands
DEBUG=false
#WORLD FUNCTIONS
startWorld()
{
if [ "$(screen -ls | grep $WSRV_SCR)" ]
then
echo $WSRV_BIN is already running
else
cd $WPATH
screen -AmdS $WSRV_SCR $THIS_FULLPATH $WSRV_BIN $DEBUG
echo $WSRV_BIN is alive
fi
}
restartWorld()
{
screen -S $WSRV_SCR -X stuff "saveall$(printf \ )"
echo saved all characters, and server restart initialized
screen -S $WSRV_SCR -X stuff "server restart 5$(printf \ )"
}
stopWorld()
{
screen -S $WSRV_SCR -X stuff "saveall
"
echo saveall sent, waiting 5 seconds to kill $WSRV_BIN
sleep 5
screen -S $WSRV_SCR -X kill &>/dev/null
echo $WSRV_BIN is dead
}
monitorWorld()
{
echo press ctrl+a+d to detach from the server without shutting it down
sleep 5
screen -r $WSRV_SCR
}
#AUTH FUNCTIONS
startAuth()
{
if [ "$(screen -ls | grep $ASRV_BIN)" ]
then
echo $ASRV_BIN is already running
else
cd $APATH
screen -AmdS $ASRV_BIN $THIS_FULLPATH $ASRV_BIN
echo $ASRV_BIN is alive
fi
}
stopAuth()
{
screen -S $ASRV_BIN -X kill &>/dev/null
echo $ASRV_BIN is dead
}
restartAuth()
{
stopAuth
startAuth
echo $ASRV_BIN restarted
}
monitorAuth()
{
echo press ctrl+a+d to detach from the server without shutting it down
sleep 5
screen -r $ASRV_BIN
}
#FUNCTION SELECTION
case "$1" in
$WSRV_BIN )
if [ "$2" == "true" ]
then
while x=1;
do
gdb $WPATH/$WSRV_BIN --batch -x gdbcommands | tee current
NOW=$(date +"%s-%d-%m-%Y")
mkdir -p $THIS_FOLDERPATH/crashes
mv current $THIS_FOLDERPATH/crashes/$NOW.log &>/dev/null
killall -9 $WSRV_BIN
echo $NOW $WSRV_BIN stopped, restarting! | tee -a $THIS_FULLPATH.log
echo crashlog available at: $THIS_FOLDERPATH/crashes/$NOW.log
sleep 1
done
else
while x=1;
do
./$WSRV_BIN
NOW=$(date +"%s-%d-%m-%Y")
echo $NOW $WSRV_BIN stopped, restarting! | tee -a $THIS_FULLPATH.log
sleep 1
done
fi
;;
$ASRV_BIN )
while x=1;
do
./$ASRV_BIN
NOW=$(date +"%s-%d-%m-%Y")
echo $NOW $ASRV_BIN stopped, restarting! | tee -a $THIS_FULLPATH.log
sleep 1
done
;;
"wstart" )
startWorld
;;
"wdstart" )
DEBUG=true
startWorld
;;
"wrestart" )
restartWorld
;;
"wstop" )
stopWorld
;;
"wmonitor" )
monitorWorld
;;
"astart" )
startAuth
;;
"arestart" )
restartAuth
;;
"astop" )
stopAuth
;;
"amonitor" )
monitorAuth
;;
"start" )
startWorld
startAuth
;;
"stop" )
stopWorld
stopAuth
;;
"restart" )
restartWorld
restartAuth
;;
* )
echo Your argument is invalid
echo "usage: start | stop | restart | wstart | wdstart | wrestart | wstop | wmonitor | astart | arestart | astop | amonitor"
exit 1
;;
esac
下面是完整代码下载
游客,如果您要查看本帖隐藏内容请回复
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
linux下编译mangos,Linux下MANGOS服务端自动重启Shell启动脚本相关推荐
- nginx 怎么重新编译安装mysql,centos 下 编译安装 nginx + mysql + php 服务
centos 下编译安装nginx + mysql + php 服务 1.安装nginx 1.1.安装依赖包 yum install wget make gcc gcc-c++ pcre-devel ...
- 非零基础自学Golang 第18章 HTTP编程(下) 18.2 HTTP服务端 18.2.2 启动HTTP服务器 18.2.3 启动HTTPS服务器
非零基础自学Golang 文章目录 非零基础自学Golang 第18章 HTTP编程(下) 18.2 HTTP服务端 18.2.2 启动HTTP服务器 18.2.3 启动HTTPS服务器 第18章 H ...
- [Eureka集群] 在linux上部署SpringCloudEureka的集群服务端(Dalston.SR5版本)
搭配使用 logback日志配置: https://blog.csdn.net/a755199443/article/details/92208902 Eureka单机服务端配置: https://b ...
- 如何用Linux系统搭建天堂2初章服务端
如何用Linux系统搭建天堂2初章服务端 准备 1,一台云服务器(这里用的是免费服务器-三丰云https://www.sanfengyun.com/) 2,天堂2初章服务端(这里用的是血玫瑰天堂2论坛 ...
- Linux VPS服务器根据CPU负载及内存占用自动重启的bash shell脚本
Linux VPS服务器根据CPU负载及内存占用自动重启的bash shell脚本 288月2011 0 主要用于监控 linux 服务器负载及内存占用,如 MySQl.php-fpm,当负载或内存占 ...
- Windows编译安装AzerothCore魔兽世界开源服务端Lua脚本引擎Eluna和防作弊anticheat模块教程
Windows编译安装AzerothCore魔兽世界开源服务端Lua脚本引擎Eluna和防作弊anticheat模块教程 大家好,我是艾西今天和大家聊聊魔兽世界游戏内的脚步以及防作弊模块 Eluna是 ...
- 微信支付服务端自动对账
微信支付服务端自动对账 支付及对账流程链接 自动对账说明 微信支付后每天的商户系统的自动对账还是比较繁琐的,所谓自动对账实际上就是将商户某天交易成功的订单信息与微信某天的账单进行逐一匹配的过程.其涉及 ...
- 后端代码之服务端 - 项目工程化创建目录启动服务 -讲解篇
文章目录 前言 一. 目录创建 与 应用启动 A. 步骤如下: B. 具体cmd命令执行流,截图如下:(`部分无效,可忽略`) 二. 查看Express的欢迎页 1. 查看欢迎页的 浏览器url地址: ...
- Mac 系统部署Frp内网穿透服务 实现frpc shell启动脚本启动、停止
Mac 系统部署Frp内网穿透服务 实现frpc shell启动脚本启动.停止 前言 最近疫情导致居家办公,而工作中需要用到公网地址便于调试,于是就在本机(Mac系统)配置了Frpc内网穿透. 本来想 ...
最新文章
- Spring中复杂类型注入
- 2014年百度之星资格赛第一题Energy Conversion
- 1、数据库为什么需要备份?
- C#泛型-泛型集合DictionaryK,V
- IP地址的简单说明---Linux学习笔记
- 安装Microsoft Windows SDK 7.1时出现的错误(附解决办法)
- 使用Hadoop自带的例子wordcount实现词频统计
- 【Python】处理UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa2 in position…
- 二分法求函数的零点(信息学奥赛一本通-T1241)
- 一种基于局部线性嵌入的半监督方法——半监督局部线性嵌入(SSLLE),MATLAB程序代码
- 钟薛高雪糕最贵一支66元 创始人:成本40 你爱要不要
- C# Winfrom DataGridView DataSource绑定数据源后--解决排序问题
- Delphi ArcEngine 创建比例尺
- -XX:HandlePromotionFailure: 是否设置空间分配担保【了解】
- 小红帽 oracle,Linux+5+红帽子企业版安装Oracle9
- android 手机 多分辨率适配
- 线性丢番图方程的C++实现
- unity3d学习笔记——老版动画系统的使用
- 证券股票交易接口需要满足什么要求才能在实盘中用?
- 英特尔OpenVINO使用入门(C++集成方式)