魔兽世界 - AzerothCore - Screen + 自动重启
作者: reistlin
来源: http://www.reistlin.com/blog/447
更新时间: 2024.03
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

AzerothCore 主页:[https://www.azerothcore.org]
AzerothCore Wiki 文档:[https://www.azerothcore.org/wiki/home]
一,使用 screen 启动 worldserver
1、安装 screen:
apt-get install screen
2、使用 screen 启动 worldserver,窗口名称为:worldserver
cd /home/reistlin/azerothcore/bin screen -S worldserver ./worldserver
3、退出当前 screen 窗口
Ctrl + a键 d键
4、查看 screen 窗口状态
reistlin@Debian:~/azerothcore/bin$ screen -ls
There is a screen on:
112233.worldserver (03/20/2024 10:00:00 AM) (Attached)
1 Socket in /run/screen/S-reistlin.
二,使用 restart.sh 重启 AzerothCore
acore_screen:screen 窗口名称(默认:worldserver)
acore_path:AzerothCore 系统根目录(默认:/home/reistlin/azerothcore)
acore_delay:服务器计划重启时间,默认 60 秒后重启,同时通知所有在线玩家
app_user:运行 worldserver 的用户名称
#!/bin/bash
# name: restart AzerothCore by screen v0.1 (Linux Server)
# author: reistlin
# website: www.reistlin.com
# date: 2024.03.20
acore_screen="worldserver"
acore_path="/home/reistlin/azerothcore"
acore_delay="60"
app_user="reistlin"
app_process="SCREEN -S ${acore_screen}"
app_port="8085"
check1=`ps v -U ${app_user} | grep "${app_process}" | grep -v "grep" | wc -l`
check2=`netstat -nlpt | grep ":${app_port}" | wc -l`
if [ "${check1}" -eq 1 ] && [ "${check2}" -eq 1 ]; then
# save
screen -x -S ${acore_screen} -p 0 -X stuff "save\n"
sleep 1
# shutdown
screen -x -S ${acore_screen} -p 0 -X stuff "server shutdown ${acore_delay}\n"
sleep `expr ${acore_delay} + 3`
# start
screen -x -S ${acore_screen} -p 0 -X stuff "${acore_path}/bin/worldserver\n"
sleep 1
# logfile
echo "[`date "+%Y-%m-%d %H:%M:%S"`] ${acore_screen} service has successfully restarted" >> $HOME/crontab/restart.log
else
echo "[EXIT] Not found worldserver by screen"
fi
编辑 crontab,设置每天凌晨 6 点自动重启
# restart AzerothCore worldserver 0 6 * * * /home/reistlin/crontab/restart.sh > /dev/null 2>&1









