【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服务器。