如何向后台运行的Minecraft服务器注入命令?
解决Ubuntu上后台运行Minecraft服务器的命令注入问题
方法1:用Screen正确实现后台运行与控制台访问
你之前用Screen没奏效大概率是启动方式不对,正确流程:
- 启动服务器并创建Screen会话:
sudo screen -S mcserver java -Xmx10G -jar server.jar nogui - 需要后台运行时,按
Ctrl+A再按D断开会话,服务器会继续在后台运行 - 要重新访问控制台执行命令:
sudo screen -r mcserver - 如果提示会话存在但无法直接连接,先列出所有会话:
再用会话ID连接:sudo screen -lssudo screen -r <会话ID>
方法2:用命名管道(FIFO)实现远程命令注入
如果已经用nohup启动了服务器,或者不想用终端复用工具,可以用管道实时注入命令:
- 创建命名管道文件:
sudo mkfifo mc_pipe - 重启服务器时将标准输入绑定到这个管道(替换原来的nohup命令):
sudo nohup java -Xmx10G -jar server.jar nogui < mc_pipe >> minecraft_logs.txt & - 往管道写入命令即可注入到服务器控制台,比如发全员消息:
给玩家发物品:echo "tellraw @a {\"text\":\"度假期间好好玩!\"}" | sudo tee mc_pipe
注:echo -e "give Steve diamond 64\n" | sudo tee mc_pipeecho -e用于处理转义字符,末尾加\n确保命令被服务器识别执行
方法3:用Tmux(更现代的终端复用工具)
Tmux功能比Screen更丰富,操作逻辑类似:
- 先安装Tmux:
sudo apt update && sudo apt install tmux - 后台启动服务器会话:
sudo tmux new-session -d -s mcserver 'java -Xmx10G -jar server.jar nogui' - 连接控制台:
sudo tmux attach-session -t mcserver - 断开会话:按
Ctrl+B再按D
为什么你之前的方法没奏效?
- 用
input.txt的方式只能在服务器启动时一次性注入文件内的命令,无法实时添加新命令 - 用Screen时如果启动命令没加
sudo,后续重新连接时用sudo会找不到会话,反之亦然,权限不一致会导致无法访问
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

