----- 第一章:开服 -----
1、◆下载安装Java:yum install -y java-1.8.0-openjdk

安装成功效果如下图所示:

2、◆创建服务端的目录:mkdir /home/mc/

把本地下载好的的服务端文件:spigot-1.12.2.jar 通过WinSCP上传到服务器的/home/mc/下

3、◆下载安装Screen:yum install -y screen
※screen功能:保持窗口内的程序/脚本运行

4、◆新建screen:screen -S mc
※mc:新建名称为“mc”的screen
◆启动服务端:java -Xincgc -Xms512m -Xmx2048m -jar /home/mc/spigot-1.12.2.jar nogui
※512m:分配的最小内存
※2048m:分配的最大内存
※/home/mc/spigot-1.12.2.jar:服务端文件的位置

◆编辑eula.txt文件:vi /home/mc/eula.txt
eula=false改为 eula=true
保存退出
(注:vi命令使用方法请自行百度)

然后再次启动服务端,启动成功的效果如下图所示:

5、附加内容:
一、关闭服务端:
1、◆首先查找正在运行的screen:screen -ls

2、◆根据screen id返回到名称为“mc”的screen界面:screen -x 31192
※31192:因为游戏运行在名称为“mc”的screen下,而31192是名称为“mc”的screen的id,screen的id不固定,请按照screen -ls的查找结果输入
3、在下图的界面下按下Ctrl+c即可关闭服务端:

二、◆彻底关闭screen(适用于有崩服自启动的强制关服):screen -X -S 31192 quit
※31192:解释同上
----- 第二章:崩服自启动 -----
1、◆在服务端目录下新建脚本:vi /home/mc/start.sh
输入以下蓝色字体内容:
----------------------------------
#!/bin/bash
#Copyright ©ZJHCOFI
while true
do
#【注】下面这行请视个人情况修改,不懂请往回翻,有相关内容
java -Xincgc -Xms512m -Xmx2048m -jar /home/mc/spigot-1.12.2.jar nogui
done
----------------------------------
保存并退出
2、◆赋予权限:chmod 755 /home/mc/start.sh
3、◆把现在正在运行的服务端关闭,在名称为“mc”的screen下(没有可新建)输入:sh /home/mc/start.sh 以重新启动服务端
(上面的那句话包含很多重点,不理解的可以往回翻,有相关内容)
4、崩服或手动停服后会自动重启,如果需要强制关服请往回翻,有相关内容

----- 第三章:自动备份 -----
功能:
1、定时备份成以时间命名的zip压缩包文件,存放在/home/backup/下
2、删除前两天的备份(如有)
3、记录备份的大小:/home/size.txt
1、◆新建备份目录:mkdir /home/backup/
2、◆安装zip:yum install -y unzip zip

3、◆在home目录下新建备份脚本:vi /home/backup.sh
输入以下蓝色字体内容(路径请视个人情况修改):
----------------------------------
#!/bin/bash
#Copyright ©ZJHCOFI
#定义时间变量
datetime=$(date +%Y%m%d%H%M)
#按照时间创建目录
mkdir /home/backup/mc${datetime}/
#将服务端目录的东西(即包括存档在内的文件)备份过来
cp -r -f /home/mc/* /home/backup/mc${datetime}/
#统计该备份的大小,并写入home目录下的size.txt文件里
du -sm /home/backup/mc${datetime}/ >> /home/size.txt
#压缩成zip文件,并删除目录
zip -r -q /home/backup/mc${datetime}.zip /home/backup/mc${datetime}/
rm -rf /home/backup/mc${datetime}/
#删除两天前的备份
deldate=`date -d '-2 day' +%Y%m%d`
rm -rf /home/backup/mc${deldate}*
----------------------------------
保存并退出
4、◆赋予权限:chmod 755 /home/backup.sh
5、◆创建自动备份规则:crontab -e
输入以下蓝色字体内容(备份规则请视个人情况修改):
----------------------------------
#每天08:00备份一次
00 08 * * * sh /home/backup.sh
#每天12:15备份一次
15 12 * * * sh /home/backup.sh
#每天16:30备份一次
30 16 * * * sh /home/backup.sh
#每天20:45备份一次
45 20 * * * sh /home/backup.sh
----------------------------------
保存并退出
即可在相应时间对服务端存档进行备份
◆手动执行备份:sh /home/backup.sh
----- 第四章:自动关服/开服 -----
需求:因服内很多学生玩家,作息对他们来说比较重要,所以弄了个定时开关服的脚本
功能:每天凌晨01:30关服,早上06:00开服
1、◆创建自动开启screen的脚本:vi /home/screen_start.sh
输入以下蓝色字体内容(路径请视个人情况修改):
----------------------------------
#!/bin/bash
#Copyright ©ZJHCOFI
screen_name=$"mc"
screen -dmS $screen_name
#创建screen后,执行/home/start.sh
cmd=$"sh /home/start.sh"
screen_id=`screen -ls | grep .mc | awk '{print $1}' | cut -d "." -f 1`
screen -x $screen_id -p 0 -X stuff "$cmd"
screen -x $screen_id -p 0 -X stuff $'\n'
----------------------------------
保存并退出
◆赋予权限:chmod 755 /home/screen_start.sh
2、◆创建在screen下执行开服的脚本:vi /home/start.sh
输入以下蓝色字体内容(路径请视个人情况修改):
----------------------------------
#!/bin/bash
#Copyright ©ZJHCOFI
cd /home/mc
sh ./start.sh
----------------------------------
保存并退出
◆赋予权限:chmod 755 /home/start.sh
3、◆创建停服脚本:vi /home/stop.sh
输入以下蓝色字体内容(路径请视个人情况修改):
----------------------------------
#!/bin/bash
#Copyright ©ZJHCOFI
#定义时间变量
datetime=$(date +%Y%m%d%H%M)
#按照时间创建目录
mkdir /home/backup/mc${datetime}/
#将服务端目录的东西(即包括存档在内的文件)备份过来
cp -r -f /home/mc/* /home/backup/mc${datetime}/
#统计该备份的大小,并写入home目录下的size.txt文件里
du -sm /home/backup/mc${datetime}/ >> /home/size.txt
#压缩成zip文件,并删除目录
zip -r -q /home/backup/mc${datetime}.zip /home/backup/mc${datetime}/
rm -rf /home/backup/mc${datetime}/
#查找名称为“mc”的screen并关闭
screen_id=`screen -ls | grep .mc | awk '{print $1}' | cut -d "." -f 1`
screen -X -S ${screen_id} quit
----------------------------------
保存并退出
◆赋予权限:chmod 755 /home/stop.sh
4、◆创建自动开关服规则:crontab -e
输入以下蓝色字体内容(开关服规则请视个人情况修改):
----------------------------------
#每天01:30关服
30 01 * * * sh /home/stop.sh
#每天06:00开服
00 06 * * * sh /home/screen_start.sh
----------------------------------
保存并退出
----- 第五章:如何开多个服而不冲突 -----
1、◆创建新的服务端的目录:mkdir /home/mc_2/
2、把服务端或者现成的服务端整合包扔进去,按照第一章流程开服,screen的名称不能重复
3、◆编辑服务端目录下的server.properties:vi /home/mc_2/server.properties
更改端口号(例如):
server-port=25565改为 server-port=2333
保存并退出

4、重启此服务端
5、客户端输入服务器地址时,后面带上端口号,如下图所示:


----- 第六章(高级脚本):自动记录玩家登陆/退出信息 -----
需求:服务端自带的log日志文件记录了太多信息,我只想要其中的玩家信息登录/退出信息而已
功能:开服后实时监控log日志文件,识别玩家登陆/退出信息,并写入在player_info.txt文件中,关服时停止监控
前提:Spigot服务端,安装了AuthMe插件并生效
1、◆创建玩家信息目录:mkdir /home/player_info/
2、◆创建自动开启screen的脚本:vi /home/player_info/start_check.sh
输入以下蓝色字体内容:
----------------------------------
#!/bin/bash
#Copyright ©ZJHCOFI
screen_name=$"check"
screen -dmS $screen_name
cmd=$"sh /home/player_info/player_check.sh"
screen_id=`screen -ls | grep .check | awk '{print $1}' | cut -d "." -f 1`
screen -x $screen_id -p 0 -X stuff "$cmd"
screen -x $screen_id -p 0 -X stuff $'\n'
----------------------------------
保存并退出
◆赋予权限:chmod 755 /home/player_info/start_check.sh
3、◆创建实时监控脚本:vi /home/player_info/player_check.sh
输入以下蓝色字体内容(路径请视个人情况修改):
----------------------------------
#=======【主程序】=======
#!/bin/bash
#Copyright ©ZJHCOFI
#====循环执行此脚本====
while true
do
#=====登录判断======
#【获取登录IP/ID】查找日志文件最后一行带有“Server”关键字和“logged”关键字的行
login_ip=`tail -n 1 /home/mc/logs/latest.log | grep ^.*Server.*logged.*$`
#=====退出判断======
#【获取退出ID】查找日志文件最后一行带有“left”关键字和“game”关键字的行
quit_name=`tail -n 1 /home/mc/logs/latest.log | grep ^.*left.*game.*$`
#=====如果检测到玩家登录=====
if [ "$login_ip" != "" ]
then
ip=${login_ip#*]:}
datetime=$(date +%Y年%m月%d日%H时%M分%S秒)
echo "${ip}-${datetime}【登录】"
echo "${ip}-${datetime}【登录】" >> /home/player_info/player_info.txt
cmd_one=$"didi"
screen_id=`screen -ls | grep .mc | awk '{print $1}' | cut -d "." -f 1`
screen -x -S $screen_id -p 0 -X stuff "$cmd_one"
screen -x -S $screen_id -p 0 -X stuff $'\n'
fi
#=====如果检测到玩家退出======
if [ "$quit_name" != "" ]
then
name=${quit_name##*:}
realname=${name%left*}
datetime=$(date +%Y年%m月%d日%H时%M分%S秒)
echo "${realname}-${datetime}《退出》"
echo "${realname}-${datetime}《退出》" >> /home/player_info/player_info.txt
cmd_two=$"didi"
screen_id=`screen -ls | grep .mc | awk '{print $1}' | cut -d "." -f 1`
screen -x -S $screen_id -p 0 -X stuff "$cmd_two"
screen -x -S $screen_id -p 0 -X stuff $'\n'
fi
#===睡眠0.3秒===
sleep 0.3
done
----------------------------------
保存并退出
◆赋予权限:chmod 755 /home/player_info/player_check.sh
4、◆创建停止监控脚本:vi /home/player_info/stop_check.sh
输入以下蓝色字体内容:
----------------------------------
#!/bin/bash
#Copyright ©ZJHCOFI
screen_id=`screen -ls | grep .check | awk '{print $1}' | cut -d "." -f 1`
screen -X -S ${screen_id} quit
----------------------------------
保存并退出
◆赋予权限:chmod 755 /home/player_info/stop_check.sh
5、◆创建自动监控规则:crontab -e
输入以下蓝色字体内容(监控规则请视个人情况修改):
----------------------------------
#每天关服前停止监控(01:25)
25 01 * * * sh /home/player_info/start_check.sh
#每天开服后开始监控(06:05)
05 06 * * * sh /home/player_info/stop_check.sh
----------------------------------
保存并退出
6、◆查看监控生成的文本:cat /home/player_info/player_info.txt

CSDN原文
文章评论