You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac Mini上制作Minecraft服务器崩溃重启.command脚本求助

解决Minecraft服务器崩溃自动重启问题

问题描述

将M1 Mac Mini改造为全天候运行的Minecraft服务器,但存在服务器崩溃后无人手动重启的问题,需要制作.command文件实现以下任一功能:

  • A)每分钟检测服务器状态,发现宕机后终止进程并重启
  • B)服务器崩溃终端退出后自动重启(优先方案A)

现有脚本错误分析

你使用的脚本存在for循环语法错误,Bash的for循环必须用do和done包裹循环体,原脚本缺失do,导致触发语法报错。

修复后的方案B脚本(服务器崩溃后自动重启)

先提供修复语法错误后的基础自动重启脚本,实现服务器崩溃终端退出后自动重启:

#!/bin/bash
while true
do
    # 切换到服务器目录(建议用绝对路径避免目录变化问题)
    cd /Users/davidking/Desktop/server
    # 启动Minecraft服务器
    /Library/Internet_Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -Xmx7G -Xms7G -jar forgeserver.jar

    # 服务器退出后执行重启倒计时
    echo "如果要彻底停止服务器进程,请在倒计时结束前按Ctrl+C!"
    echo "重启倒计时:"
    for i in 5 4 3 2 1
    do
        echo "$i..."
        sleep 1
    done
    echo "正在重启服务器!"
done

脚本说明

  1. 开头添加#!/bin/bash指定解释器,避免环境差异引发问题
  2. 将cd Desktop/server改为绝对路径/Users/davidking/Desktop/server,防止终端默认目录变化导致找不到文件
  3. 补全for循环的do语句,修复语法错误
  4. 服务器进程结束(崩溃或正常关闭)后,进入倒计时,倒计时结束自动重启;若要停止脚本,在倒计时期间按Ctrl+C即可

方案A实现(定时检测并重启)

若要实现每分钟检测服务器状态、宕机后自动重启,可使用以下脚本:

#!/bin/bash
SERVER_IP="127.0.0.1"
SERVER_PORT="25565"
SERVER_DIR="/Users/davidking/Desktop/server"
JAVA_PATH="/Library/Internet_Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"
SERVER_JAR="forgeserver.jar"
HEAP_ARGS="-Xmx7G -Xms7G"

# 启动服务器函数
start_server() {
    echo "启动Minecraft服务器..."
    cd "$SERVER_DIR"
    $JAVA_PATH $HEAP_ARGS -jar $SERVER_JAR &
    SERVER_PID=$!
    echo "服务器PID: $SERVER_PID"
}

# 初始化启动服务器
start_server

while true
do
    # 用nc命令检测服务器端口是否开放(比Ping更准确,直接检测服务状态)
    if ! nc -z "$SERVER_IP" "$SERVER_PORT" 2>/dev/null; then
        echo "服务器已宕机,正在重启..."
        # 终止残留进程(如果存在)
        if [ -n "$SERVER_PID" ]; then
            kill -9 "$SERVER_PID" 2>/dev/null
        fi
        # 重启服务器
        start_server
    fi
    # 每分钟检测一次
    sleep 60
done

方案A说明

  1. 使用nc(netcat)检测Minecraft默认端口25565的连通性,相比Ping更精准——Ping仅检测主机存活,端口检测才能确认服务器服务正常
  2. 脚本启动后先初始化启动服务器,之后每分钟进行一次端口检测
  3. 若端口无法连通,会杀掉旧进程(如果存在)并重启服务器
  4. 若你的服务器端口不是25565,需修改SERVER_PORT的值

使用注意事项

  1. 将脚本保存为start.command后,需赋予执行权限:
    chmod +x /Users/davidking/Desktop/start.command
    
  2. 所有文件和目录建议使用绝对路径,避免因终端工作目录变化导致错误
  3. 若Java路径不正确,可通过which java命令查看正确路径,替换脚本中的JAVA_PATH

内容的提问来源于stack exchange,提问作者Isna Owo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 06:30:53