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

Bash脚本执行Minecraft server.jar后echo无输出问题

故障原因

你的脚本存在4个核心逻辑错误,导致指令无法正常送达服务器:

  • shell脚本默认逐行阻塞执行,第一行启动服务端的java -Xmx5G -Xms3G -jar server.jar nogui会持续占用前台进程,除非手动终止该进程,后续修改eula、修改端口的代码永远不会执行。第一次启动服务端的目的是生成配置文件,你没有设计自动终止逻辑,流程直接卡死在第一步。
  • 路径包含空格但未做转义:/home/my name/路径中的空格会被shell识别为参数分隔符,sed命令会把/home/my识别为目标路径,后续路径被当成多余参数,直接报路径不存在,配置修改逻辑完全失效。
  • 第二次启动服务端的java命令同样是前台阻塞进程,脚本运行到这一行会一直等待java进程退出,后续的sleep 60、echo命令只有在你手动关闭服务器后才会执行,此时服务器进程已经退出,echo输出的内容只会打印在bash终端,根本不会进入Minecraft服务器的输入流。
  • 固定等待60秒的逻辑不可靠:如果服务器性能差加载时间超过60秒,指令发送时服务器还没完成加载;如果加载快于60秒,会白白浪费等待时间。
修复方案

用命名管道对接服务器标准输入,调整流程阻塞逻辑,修复路径问题,修正后的完整脚本如下:

#!/bin/bash
# 定义服务端目录,路径全程用双引号包裹处理空格
SERVER_DIR="/home/my name/minecraft_server"
mkdir -p "$SERVER_DIR"
# 目录跳转失败直接退出,避免后续操作写到错误路径
cd "$SERVER_DIR" || exit 1

# 下载服务端核心
wget https://launcher.mojang.com/v1/objects/e00c4052dac1d59a1188b2aa9d5a87113aaf1122/server.jar

# 第一次启动服务端生成配置文件,进程放后台运行
java -Xmx5G -Xms3G -jar server.jar nogui &
INIT_PID=$!
# 轮询等待配置文件生成,不需要手动终止进程
while [ ! -f "$SERVER_DIR/eula.txt" ] || [ ! -f "$SERVER_DIR/server.properties" ]
do
    sleep 1
done
# 配置生成完成后终止初始化进程
kill $INIT_PID
wait $INIT_PID 2>/dev/null

# 修改配置项,路径加双引号处理空格
sed -i "s/^eula.*/eula=true/" "$SERVER_DIR/eula.txt"
sed -i "s/^server-port.*/server-port=40004/" "$SERVER_DIR/server.properties"

# 创建命名管道对接服务器标准输入,实现运行中发送指令
mkfifo mc_pipe
tail -f mc_pipe | java -Xmx5G -Xms3G -jar server.jar nogui &
# 轮询日志匹配服务器加载完成标记(官方服务端加载完成会打印包含Done的日志行)
while ! grep -q "Done" "$SERVER_DIR/logs/latest.log"
do
    sleep 1
done
# 额外等待2秒确保世界、权限层加载稳定
sleep 2
# 将op指令写入管道,直接送入服务器控制台
echo "/op My Username" > mc_pipe

# 保持脚本前台运行,避免管道断开导致服务器退出
wait

关键改动说明

  • 所有包含空格的路径全程用双引号包裹,解决空格导致的参数识别错误
  • 初始化生成配置阶段把java进程放后台,检测到配置文件生成后自动终止进程,不需要手动操作卡流程
  • 放弃固定sleep等待,改为轮询日志中的加载完成标记,等待时间完全匹配服务器实际加载速度
  • 通过命名管道把服务器的标准输入暴露出来,所有要发送给服务器的指令直接写入管道,解决了之前echo内容无法进入服务器输入流的核心问题
  • 增加目录跳转容错判断,避免路径异常时脚本在错误位置执行写操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:18:09