魔兽世界私服定时重启服务器的shell脚本

#!/bin/bash
echo 'start svn'
su - www -c "svnserve --listen-port=9527 -d -r /home/www/svnroot"
sleep 3
echo 'bak dbs'
/home/ubuntu/sql.sh
#su zero
sleep 10
echo 'start worldserver'
su - zero -c "screen -dmS worldserver /home/zero/server/bin/worldserver"
sleep 1
echo 'wating 10ms'
sleep 10
echo 'start auth'
su - zero -c "screen -dmS authserver /home/zero/server/bin/authserver"
sleep 1
echo 'done!'

虽然服务器跑起来一般除了更新打补丁之外,几乎不需要重启。
但是,考虑到定时重启可以刷新“冬拥湖”战场以及释放内存。
所以,有必要让魔兽服务也每天定时重启一下。
既然有这个想法,就询问了一下服务器上的人。给出的无人时段在凌晨5-6点之间。
简单筹备了一下。设定如下重启计划:
1、5.13服务器执行reboot命令(重启)
2、5.18服务器启动版本库svn。
3、5.20服务器执行数据库备份命令。主要是用户表auth、角色表characters以及世界表world
4、5.23执行worldserver启动(使用screen启动,并挂起)
5、5.25执行authserver启动(使用screen启动,并挂起)
首先是使用linux的计划任务crontab。
在crontab 设置每天凌晨5.13 执行reboot命令。
然后在增加一条指令在重启后执行你的服务器启动脚本。

13 5 * * * reboot
@reboot /root/restart.sh
这个两行命令的意思是:在每天的5.13分执行reboot。在每次reboot之后执行 /root/restart.sh
接下来,就开始写启动命令。
首先是我们使用root执行shell脚本,需要切换用户去启动对应的服务。
svn服务假设在www用户下,魔兽相关在zero用户下,数据库备份在root用户下。
echo ‘start svn’ #这意思是说:打印出来我正在启动svn
su – www -c “svnserve –listen-port=9527 -d -r /home/www/svnroot”
上面这句:使用su命令 指定 用户www 执行”svnserve –listen-port=9527 -d -r /home/www/svnroot”,也就是说,启动一个svn的守护进程监听“9527”端口。
sleep 3
这行命令的意思是说,延迟3秒后往下执行。
备份sql的sh是root用户的,无须su,直接执行即可。
最后,解释一下启动魔兽服务器的指令:
su – zero -c “screen -dmS worldserver /home/zero/server/bin/worldserver”
首先是切换zero用户,执行screen 参数-dmS 也就是说,我们用screen 注册一个窗口名字为worldserver的进程去执行/home/zero/server/bin/worldserver,并且直接挂起。
这样一来,每次登录服务器之后,通过screen -ls 就可以查看魔兽服务器运行的状态了。
经测试可用。
=======重要补充==========

因为我的服务器使用的是TrinityCore核心,并且启用了Eluna。使用上述自动重启脚本后,发现eluna无法正确加载。经检查是因为screen 直接启动的是绝对路径的服务。但是Eluna的配置写的却是相对路径。
所以要打开服务etc目录,修改worldserver.conf中关于eluna的配置。将加载目录修改为绝路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值