【Minecraft】Linux服务器自动化管理(我的世界开服干货)

您所在的位置:网站首页 服务器关服 【Minecraft】Linux服务器自动化管理(我的世界开服干货)

【Minecraft】Linux服务器自动化管理(我的世界开服干货)

2023-10-22 20:31| 来源: 网络整理| 查看: 265

封面

--- 前言 ---

本教程是基于Linux下的对Minecraft服务端(Java Edition)的自动化管理,不适用于手机版、网易版、Win10版

UP主的Linux发行版是:CentOS 7.2 x64,Minecraft服务端是:Spigot-1.12.2(这些条件可以不相同,对教程的内容影响不大)

本教程不涉及服务端的下载/配置、插件的下载/配置等,如有需求的,请转至以下网址:

→spigot下载:https://getbukkit.org/download/spigot

→服务端合集:https://www.mcbbs.net/thread-661632-1-1.html

→服务端优化:https://www.mcbbs.net/thread-478126-1-1.html

本教程需要您有“少许”的Linux命令基础,SSH软件(控制服务器用):SecureCRT,传输软件(与服务器之间的上传/下载文件用):WinSCP

小白请按顺序查看本教程(您有可能看不懂或者操作出错,这很正常),对Linux较为了解的童鞋可以直接看自己需要的脚本

本教程内容默认按照CentOS和Spigot-1.12.2的条件编写,所作操作均由最高权限用户root执行,教程里涉及到的路径(文件名、目录等)均用作演示,请视个人情况进行修改

如发现本教程有错误,请与UP主联系,UP主会尽快修正

【推广】UP主搭建的EMC²纯净生存服(公益服),感谢服内各位小伙伴的肝和各种完善服务器的建议(QQ搜索群名即可)

EMC²纯净生存服----- 第一章:开服 -----

1、◆下载安装Java:yum install -y java-1.8.0-openjdk

安装java

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

成功

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

创建服务端的存放目录

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

上传服务端

3、◆下载安装Screen:yum install -y screen

※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命令使用方法请自行百度)

修改eula.txt文件

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

启动成功

5、附加内容:

一、关闭服务端:

1、◆首先查找正在运行的screen:screen -ls

正在运行的“mc”screen

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

安装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

查看监控文本----- 结语 -----

我的世界,等着你去创造

给大家拜个早年,希望各位能三连~

合影于2020.03.22



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3