当我退出 Putty 时,Linux Minecraft 服务器会关闭?

当我退出 Putty 时,Linux Minecraft 服务器会关闭?

我最近开始运行 Minecraft 服务器。

我不知道如何在退出控制台或腻子后不终止进程。

命令是:

Java -jar minecraft_server.1.10.2.jar

但是有时:

Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar

答案1

当您关闭 PuTTY 时,它会向计算机发送挂断信号,该信号会被各种程序(包括 Minecraft)捕获。你可以使用nohup,并将 Minecraft 的标准输出和标准错误重定向到文件(或/dev/null),但有些人发现安装screentmux并留下计算机上运行的会话更简单。这样,当您关闭 screen/tmux 时,您可以稍后返回并查看消息。

我通常使用screen,它使用的击键次数比tmux.例如,

  • 跑步screen
  • 按回车键获取 shell
  • 运行我的世界
  • 输入controlAd(control/A 后接 d)进行分离
  • 关闭腻子

这让我想起一些屏幕默认配置仍然关闭终端时关闭会话。如果这是一个问题,可以添加详细信息...

答案2

我曾经在 Raspberry Pi 上运行 Terraria 服务器,也遇到了同样的问题。

对我来说解决方案是screen

使用安装它sudo apt install screen,然后运行我的世界服务器,但放在screen它之前。

命令是: screen Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar

答案3

我不是 100% 确定你在问什么,但无论如何我都会尝试回答:)当你使用 ssh 终端模拟器(例如 putty)连接到远程系统并运行“前台进程”(即在该终端中保持打开状态,而不是在后台运行的守护进程),一旦您与 ssh 会话断开连接,该进程就会终止。如果您运行后台进程(即守护程序),即使远程会话结束后它也会继续运行。 (您可以通过在启动该进程的命令末尾附加 & 来“守护”大多数前台进程。)要从另一个会话中终止它,您需要知道它的 PID 号(例如通过ps aux | grep 'name_of_process'或使用 top 或 htop 实用程序获得,或者通过发出killall name命令......可能还有十几种其他方式)。另一方面,为了在会话之间保持前台进程处于活动状态,您需要使用诸如screen,tmuxbyobu终端多路复用器之类的东西。它们可以在断开连接时分离到后台,并在您下次登录时重新连接,其中运行的所有进程都完好无损。 (当然,如果他们死了或者被杀了,他们身上的一切也会死)。

命令是 Java -jar minecraft_server.1.10.2.jar 但有时 Java -Xmx1024M -Xms1024M -jar minecraft_server.1.10.2.jar

如果它停留在后台,您可以在下次登录时通过以下命令之一杀死它killkillall java这将杀死所有正在运行的 java 进程!)或ps aux |grep minecraft,这将吐出所有带有“minecraft”一词的进程(可能包括 ps aux|grep minecraft),用户名旁边的数字是 PID。然后,只需kill PID(其中 PID 是上一个命令中的数字......)就可以解决问题。通过再次运行来验证ps aux |grep minecraft。 (如果仍在运行,请尝试kill -9 PID下一步。)

答案4

发生这种情况的原因是当您关闭 SSH 会话时,您的 SSH 服务器会终止您正在运行的所有进程。

到目前为止,这里提供的解决方案讨论的是使用screen- 它基本上可以让您从终端会话断开连接,注销,然后在稍后重新连接到它 - 让所有进程仍然运行。

然而,这个解决方案没有考虑到您的服务器进程崩溃、服务器重新启动或其他奇怪的情况发生。

为此,我建议您研究如何为您的服务器创建系统服务。如何定义这样的东西因系统而异,但一般原则是,一旦服务的依赖项启动,服务器就会自动启动服务,并且如果服务终止,则可以选择重新启动它。您甚至可以要求许多程序将其输出保存到日志文件中,而不是写入标准输出。

如果您systemctl的终端中有该命令,则您可能已经安装了 systemd。这是一个教程我发现为基于 systemd 的系统设置 Minecraft 服务文件。

如果您没有systemctl,那么您可能拥有基于 OpenRC 或基于 upstart 的系统。在这些情况下,您应该调查 中的现有服务/etc/init.d,并基于此创建您自己的服务。(如果有人知道有关该主题的好教程,请编辑!)

相关内容