有条件地停止 bash 循环并向游戏服务器发送 /stop 命令

有条件地停止 bash 循环并向游戏服务器发送 /stop 命令

我正在使用循环来自动重新启动 Minecraft 服务器(如果它崩溃或停止)。这对于崩溃或计划重新启动非常有用,但是有时我们特别想要停止服务器而不是重新启动。

#!/bin/sh
while true
do
java ... args
sleep 5
done

理想情况下,我可以以某种方式告诉这个循环结束将命令传递/stop给我的世界服务器,这样我就不需要同时执行这两个操作。

我对 shell 脚本非常陌生,所以我不确定正确的方法。

Ubuntu 18.xx(如果有的话)。

答案1

我同意 Panki 的评论,听起来你最好将我的世界服务器作为服务运行。

基本上,您必须向“systemd”目录添加一些文件,这些文件使操作系统能够在您告诉它启动时保持进程运行,并在您告诉它停止时停止它。

有很多教程可以帮助您进行设置。例如:

详细的:https://linuxconfig.org/how-to-create-systemd-service-unit-in-linux

易于遵循:https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6

我的世界特定:https://linuxize.com/post/how-to-install-minecraft-server-on-ubuntu-18-04/#creating-systemd-unit-file

为了保持它的“启动”状态,您应该将以下行添加到您的服务中:

Restart=always

也可以看看:https://serverfault.com/questions/611525/standard-or-best-way-to-keep-alive-process-started-by-init-d

相关内容