bash 时停止

0 bash

我使用这个 bash.sh 来启动和重启我的游戏服务器。它运行@reboot

while true; do
./Server
done
Run Code Online (Sandbox Code Playgroud)

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

if ($exists(filename.txt)) { halt }
Run Code Online (Sandbox Code Playgroud)

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

Sté*_*las 6

那将是:

until [ -e filename.txt ]; do
  ./Server
done
Run Code Online (Sandbox Code Playgroud)

与...一样:

while [ ! -e filename.txt ]; do
  ./Server
done
Run Code Online (Sandbox Code Playgroud)

如果在 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
Run Code Online (Sandbox Code Playgroud)

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

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