【Minecraft】Linux服务器自动化管理(我的世界开服干货) |
您所在的位置:网站首页 › 服务器关服 › 【Minecraft】Linux服务器自动化管理(我的世界开服干货) |
封面--- 前言 --- 本教程是基于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功能:保持窗口内的程序/脚本运行 安装screen4、◆新建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”screen2、◆根据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 安装zip3、◆在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 |