【问题标题】:Minecraft Linux Server | Start.sh problemMinecraft Linux 服务器 | start.sh 问题
【发布时间】:2026-02-09 15:00:01
【问题描述】:

我有一个在 Linux 上运行的 Minecraft 服务器。 我用来启动服务器,一个 start.sh 文件,内容如下: (此内容启动屏幕会话和 minecraft 服务器)

screen -S {ScreenSession} java -Xmx2G -Xms2G -jar spigot-1.18.1.jar

如果我使用 /restart ingame,屏幕会话将结束,服务器将无法启动。所以我必须进入 Linux 服务器并重新启动 Minecraft 服务器。

我的问题:

我怎样才能做到这一点,如果我使用 /restart,服务器将在活动屏幕会话中重新启动。

如果尝试过很多事情。 我希望有一个人可以帮助我, ~Kitty Cat Craft

【问题讨论】:

  • 你不能。 /stop 将停止服务器,从而停止屏幕。
  • 然后重启
  • “重新启动服务器”是什么意思?再次运行相同的命令?
  • 我的意思是如果你使用/restart,服务器应该重启但是屏幕会话关闭并且服务器不会启动。所以需要有一种方法,当我使用 /restart 会话重新启动和服务器时。

标签: linux server minecraft


【解决方案1】:

有多种方法可以实现您想要的。

如果您有很多服务器,您可以使用带有自动重启功能的快速 bash 脚本:

#!/bin/sh
while true
do
   java -Xmx2G -Xms2G -jar spigot-1.18.1.jar --nogui
   sleep 5
done

当你停止时,它会等待 5 秒然后重新启动。

有了这个,您可以使用:screen -dmS <screenName> sh myScript.sh,它将脚本运行到另一个屏幕。当您从运行大量服务器的脚本中运行它时,它很有用,就像这样:

screen -dmS srv1 sh srv1.sh
screen -dmS srv2 sh srv2.sh
screen -dmS srv3 sh srv3.sh

如果你只有一台服务器,你也可以先使用screen -S screenName。然后,当您在屏幕中时,运行自动重启的脚本(我最初提供的脚本)。

另外,最好使用 /stop 而不是 /restart,因为 spigot 会尝试查找脚本。如果成功,它会再次运行相同的脚本,因此会有幽灵进程。

【讨论】:

  • 谢谢,我会试试的。
  • 所以只需将所有当前文件夹替换为 bin 内容并将会话内容输入控制台,对吗?
  • 不,您使用此内容创建一个文件,然后在您创建的屏幕中运行此文件
  • 错误:1。./start.sh:第 1 行:$'\r':找不到命令 2../start.sh:第 7 行:意外标记附近的语法错误done' 3. ./start.sh: line 7: done '
  • 这是因为您保存文件的方式。您似乎是用 Windows 编写的,然后上传到 linux。我建议您删除该文件,然后使用echo "" > myscript.sh 之类的命令行创建一个新文件,然后从 Windows 编辑(您将获得良好的编码)