我使用这个 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
这可能很危险