如何在使用屏幕时发生崩溃或 /stop 的情况下自动重启 Minecraft Spigot 服务器?

Pau*_*ker 2 bash automation restart minecraft server

我使用 screen 在 linux 上运行我的 minecraft spigot 服务器,以便我可以在同一个控制台上同时执行其他任务。使用 screen 时,Internet 和Spigot wiki上描述的所有重启脚本都不再有效。“/restart”命令也从未奏效。那么,如果服务器崩溃或我在游戏中使用“/stop”关闭它,我如何在短时间内自动重新启动服务器?

Pau*_*ker 9

教程

一位朋友编写了一个 bash 脚本,用于在发生崩溃时自动重启 minecraft(spigot)服务器,或者在使用 screen 时使用命令“/stop”。有几秒钟的时间可以用 Enter 取消重新启动。此外,将前一个会话的退出代码写入文件,可用于了解服务器何时以及为何崩溃或重新启动。

你需要两个文件:

  1. “开始.sh”

#!/bin/sh

screen -d -m -S "mc_spigot_server" ./startserver.sh

Run Code Online (Sandbox Code Playgroud)
  1. “启动服务器.sh”

#!/bin/bash

JAR=spigot-1.15.2.jar
MAXRAM=1024M
MINRAM=1024M
TIME=20


while [ true ]; do
    java -Xmx$MAXRAM -Xms$MINRAM -jar $JAR nogui
    if [[ ! -d "exit_codes" ]]; then
        mkdir "exit_codes";
    fi
    if [[ ! -f "exit_codes/server_exit_codes.log" ]]; then
        touch "exit_codes/server_exit_codes.log";
    fi
    echo "[$(date +"%d.%m.%Y %T")] ExitCode: $?" >> exit_codes/server_exit_codes.log
    echo "----- Press enter to prevent the server from restarting in $TIME seconds -----";
    read -t $TIME input;
    if [ $? == 0 ]; then
        break;
    else
        echo "------------------- SERVER RESTARTS -------------------";
    fi
done

Run Code Online (Sandbox Code Playgroud)

您可以通过更改变量来更改启动参数:

JAR = 服务器文件名

MAXRAM = 最大 RAM

MINRAM = 最小内存

TIME = 服务器自动重启之前的时间(以秒为单位)

在目录中执行以下命令:

chmod +x start.sh startserver.sh
Run Code Online (Sandbox Code Playgroud)

运行你的启动脚本:

./start.sh
Run Code Online (Sandbox Code Playgroud)
  • 要离开我的世界屏幕,请按 Ctrl + A + D

  • 重新连接到我的世界屏幕使用 screen -r

您是否发现了任何错误或您不同意?帮助我做得更好。