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

如何在不打开Screen会话的情况下向Minecraft服务器执行命令

如何在不打开Screen会话的情况下向Minecraft服务器执行命令

嘿,我来帮你搞定这个问题!你想要通过Bash脚本给运行在Screen会话里的Minecraft服务器批量添加白名单用户,而且不想手动打开Screen会话操作对吧?咱们一步步来解决:

首先,你之前尝试的两个命令格式不对,这才导致没效果。正确的做法是用Screen的-X stuff命令,它可以直接把输入内容发送到指定的运行中会话里,不需要打开会话界面。

正确的命令格式

要给名为Minecraft的Screen会话发送白名单添加命令,你需要这样写:

screen -S Minecraft -X stuff "/whitelist add merfy69\n"

这里的关键点:

  • -S Minecraft:指定目标Screen会话的名称(如果不确定会话名,可以用screen -list查看准确的会话标识)
  • -X stuff:告诉Screen要向会话中输入内容
  • "\n":模拟按下回车键,这样Minecraft服务器才会执行这条命令

为什么你之前的命令没用?

  • screen -d -m Minecraft -c "/whitelist add merfy69":这个命令是用来创建一个新的后台Screen会话并执行命令,而不是给已经在运行的Minecraft会话发命令,所以完全不符合你的需求。
  • screen -S Minecraft -X "/whitelist add merfy69":-X后面需要跟Screen的内部命令(比如stuff),而不是直接放Minecraft的命令,所以这条命令也无法被正确解析。

关于模拟Ctrl+A+D的问题

如果真的不小心进入了Screen会话,其实不需要手动按快捷键,直接在终端执行screen -d Minecraft就能将指定的会话后台化(相当于模拟了Ctrl+A+D的操作)。不过其实你根本不需要走到这一步,用上面的stuff命令就能直接完成白名单添加操作,完全不用进入会话。

批量添加的Bash脚本示例

如果你要批量处理多个用户名,可以写一个简单的脚本,比如读取一个每行一个用户名的文本文件:

#!/bin/bash
# 定义存储用户名的文件路径
USER_LIST="whitelist_users.txt"

# 循环读取每个用户名并添加到白名单
while read -r username; do
    # 跳过空行
    if [[ -z "$username" ]]; then
        continue
    fi
    screen -S Minecraft -X stuff "/whitelist add $username\n"
    echo "已将用户 $username 添加到白名单"
    # 给服务器一点处理时间,避免命令发送过快
    sleep 1
done < "$USER_LIST"

备注:内容来源于stack exchange,提问作者merfy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:03:04