bash - 如何在使用屏幕时发生崩溃或/停止时自动重启 Minecraft Spigot 服务器?

标签 bash server automation minecraft restart

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

最佳答案

教程

一位 friend 编写了一个 bash 脚本,用于在发生崩溃或使用屏幕时使用命令“/stop”自动重启 minecraft(spigot)服务器。 有几秒钟的时间可以使用 Enter 取消重启。 此外,前一个 session 的退出代码被写入一个文件,可以用来了解服务器崩溃或重启的时间和原因。

你需要两个文件:

  1. “启动.sh”

#!/bin/sh

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

  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

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

JAR = server filename

MAXRAM = maximum RAM

MINRAM = minimum RAM

TIME = time in seconds until server restarts automatically

在目录中执行以下命令:

chmod +x start.sh startserver.sh

运行你的启动脚本:

./start.sh
  • 要离开 minecraft 屏幕,请按 Ctrl + A + D

  • 要重新连接到 minecraft 屏幕,请使用 screen -r

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

关于bash - 如何在使用屏幕时发生崩溃或/停止时自动重启 Minecraft Spigot 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62143022/

相关文章:

linux - 将上网脚本列入白名单

javascript - 如何通过 native 消息传递 API 将用户凭据传递给 chrome

php - 监控文本身份验证背后的网页

linux - 创建init.d脚本文件

python /usr/bin/env : bad interpreter: Not a directory

java - Java 中的 Linux 命令 "write all used jars by JVM to file"

c# - 寻找适用于 .NET (WinForms) 的 GUI 自动化框架

bash 如何有选择地删除字符串中的空格

javascript - Node.js:如何在列表中显示响应数据

php - 如何回显公用文件夹之外的图像