【Minecraft】【我的世界】关于JAVA自建服务器的一些问答
Q1 在ssh连接的linux主机,运行server.jar之后,直接退出ssh工具,minecraft服务器还会继续运行吗
A1(答案由ChatGPT4生成)
当你通过SSH连接到Linux主机并启动了Minecraft服务器(或任何其他应用程序)后,如果你直接关闭SSH会话,由该会话启动的进程通常也会被终止。这是因为当SSH会话关闭时,它会发送一个SIGHUP信号到Shell会话中运行的所有进程,通常这会导致这些进程的终止。
为了保持Minecraft服务器在关闭SSH会话后继续运行,你可以使用如nohup
、screen
、或tmux
等工具来启动你的Minecraft服务器。
使用nohup
nohup
命令可以用来忽略所有的SIGHUP信号,使得运行的进程在退出SSH会话后继续运行。
nohup java -Xmx1024M -Xms1024M -jar server.jar nogui &
&
符号会使得该命令在后台运行。
使用screen或tmux
screen
和tmux
都是终端复用器,它们允许你从一个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服务器。
-
使用
ps
命令找到Minecraft服务器的进程ID:ps aux | grep java
-
找到类似于
java -Xmx1024M -Xms1024M -jar server.jar nogui
的行,记录下该行最前面的数字(这是进程ID)。 -
发送
SIGTERM
信号到Java进程:kill -15 <进程ID>
请将
<进程ID>
替换为你在步骤2中找到的进程ID。SIGTERM
信号会让Java进程优雅地关闭,这应该会触发Minecraft服务器的停止序列,从而保存世界数据。
方法2:使用screen
或tmux
为了防止这种情况在未来再次发生,你可以考虑使用screen
或tmux
来运行你的Minecraft服务器。这样即使你退出了SSH会话,你也可以重新连接回服务器的控制台,并输入stop
来安全地关闭服务器。
例如,使用screen
:
-
启动一个新的
screen
会话:screen -S minecraft
-
启动你的Minecraft服务器:
java -Xmx1024M -Xms1024M -jar server.jar nogui
-
如果你需要断开连接,可以使用
Ctrl-A
然后D
。 -
你可以使用
screen -r minecraft
重新连接到会话。
在screen
或tmux
会话中,你可以随时输入stop
来安全地停止Minecraft服务器。