bash 时停止

bash 时停止

我使用这个 bash.sh 来启动并在出现故障时重新启动我的游戏服务器。它运行@reboot

while true; do
./Server
done

我需要定期更新该服务器,当它关闭时。关闭它似乎是不可能的。在其他脚本和语言中我使用

if ($exists(filename.txt)) { halt }

在一个牢不可破的进程的 while 循环中,它允许我将一个空文件放入进程目录中,如果存在,脚本将停止脚本在终止后重新启动进程。这对我来说似乎是最简单的解决方案。在这种情况下我该怎么做?

答案1

那将是:

until [ -e filename.txt ]; do
  ./Server
done

与...一样:

while [ ! -e filename.txt ]; do
  ./Server
done

如果在 Linux 上,你还可以这样做:

while true; do
  # wait for filename.txt to be removed if it's there:
  inotifywait -qe DELETE_SELF filename.txt 2> /dev/null
  ./Server
done

仅防止Server在文件存在时启动,但在文件删除后立即重新启动。

如果您是计算机上的管理员,那么将其添加为由初始化系统处理的服务会更有意义,该服务将负责正确地守护它,在需要时在意外退出时重新启动(重生)等。然后,您' dservice whatever stop在编辑之前和start之后进行。

答案2

您可以使用break这样的命令:

while true; do
    ./Server
    if [ -e filename.txt ] ; then
        break
    fi
done

但上面的脚本会一直运行,./Server这可能很危险

相关内容