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 循环中,它允许我将一个空文件放入进程目录中,如果存在该文件,则脚本一旦终止就停止重新启动进程。这对我来说似乎是最简单的解决方案。在这种情况下我该怎么做?
那将是:
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
之后做。