«

【Minecraft】【我的世界】关于JAVA自建服务器的一些问答

时间:2023-10-23 18:02     作者:FunJoo     分类: 游戏笔记


Q1 在ssh连接的linux主机,运行server.jar之后,直接退出ssh工具,minecraft服务器还会继续运行吗

A1(答案由ChatGPT4生成)
当你通过SSH连接到Linux主机并启动了Minecraft服务器(或任何其他应用程序)后,如果你直接关闭SSH会话,由该会话启动的进程通常也会被终止。这是因为当SSH会话关闭时,它会发送一个SIGHUP信号到Shell会话中运行的所有进程,通常这会导致这些进程的终止。

为了保持Minecraft服务器在关闭SSH会话后继续运行,你可以使用如nohupscreen、或tmux等工具来启动你的Minecraft服务器。

使用nohup

nohup命令可以用来忽略所有的SIGHUP信号,使得运行的进程在退出SSH会话后继续运行。

nohup java -Xmx1024M -Xms1024M -jar server.jar nogui &

&符号会使得该命令在后台运行。

使用screen或tmux

screentmux都是终端复用器,它们允许你从一个SSH会话中断开,然后重新连接回来。

使用screen

screen -S minecraft
java -Xmx1024M -Xms1024M -jar server.jar nogui

然后你可以按Ctrl-A然后按D来断开。之后即使你退出SSH,进程也会继续运行。重新连接回来时,你可以使用screen -r minecraft来重新连接到你的会话。

使用tmux

tmux new -s minecraft
java -Xmx1024M -Xms1024M -jar server.jar nogui

你可以按Ctrl-B然后按D来断开。重新连接回来时,你可以使用tmux attach -t minecraft来重新连接到你的会话。

这些方法都可以让你在退出SSH会话后保持Minecraft服务器运行。选择哪一个取决于你的个人偏好和系统上已经安装的工具。

Q2 如果使用了nohup java -Xmx1024M -Xms1024M -jar server.jar nogui & 那么我要如何回到这个命令的操作,我需要输入stop来停止服务器并且保存

A2(答案由ChatGPT4生成)
如果你使用nohup在后台启动了Minecraft服务器,并且你已经退出了SSH会话,你将无法直接重新连接到服务器的控制台来输入stop命令。

nohup命令会将程序的输出重定向到一个名为nohup.out的文件中,除非你指定了其他文件。你不能通过这个文件来发送命令到服务器。在这种情况下,你可能需要采取其他方法来停止服务器并确保数据完整。

方法1:使用kill命令

你可以通过查找Java进程的进程ID(PID)并使用kill命令来安全地停止Minecraft服务器。

  1. 使用ps命令找到Minecraft服务器的进程ID:

    ps aux | grep java
  2. 找到类似于java -Xmx1024M -Xms1024M -jar server.jar nogui的行,记录下该行最前面的数字(这是进程ID)。

  3. 发送SIGTERM信号到Java进程:

    kill -15 <进程ID>

    请将<进程ID>替换为你在步骤2中找到的进程ID。

    SIGTERM信号会让Java进程优雅地关闭,这应该会触发Minecraft服务器的停止序列,从而保存世界数据。

方法2:使用screentmux

为了防止这种情况在未来再次发生,你可以考虑使用screentmux来运行你的Minecraft服务器。这样即使你退出了SSH会话,你也可以重新连接回服务器的控制台,并输入stop来安全地关闭服务器。

例如,使用screen

  1. 启动一个新的screen会话:

    screen -S minecraft
  2. 启动你的Minecraft服务器:

    java -Xmx1024M -Xms1024M -jar server.jar nogui
  3. 如果你需要断开连接,可以使用Ctrl-A然后D

  4. 你可以使用screen -r minecraft重新连接到会话。

screentmux会话中,你可以随时输入stop来安全地停止Minecraft服务器。

标签: Linux Minecraft 我的世界