如何使 while true 循环仅在服务器关闭或崩溃时再次启动 program/minecraft 服务器?

How do I make a while true loop only start the program/minecraft server again if it closes or crashes?

你好我正在 运行使用重启插件连接 Minecraft 服务器,但它需要程序自行重启,所以我使用了 While true sleep 5 循环,它似乎工作正常但过了一段时间它只是一次又一次地开始打开,然后在某个时候一直使用 100% cpu。

如何让它在服务器关闭或崩溃之前不再启动程序?

#!/bin/sh
while true
do
java -Xms1G -Xmx6G -jar server.jar
sleep 5
done

由于睡眠设置为 5 后它不断打开,我看到说无法每 5 秒启动 m​​inecraft 服务器,但它已经 运行ning,我希望它只 运行 while循环如果程序不是运行ning.

使用带有 -f 标志的 pgrep 可以搜索带有一些参数的 运行 进程。您可以使用它来检查服务器是否已经 运行.

例如:

#!/bin/bash

while true
do
    if ! pgrep -f server.jar
    then
        java -Xms1G -Xmx6G -jar server.jar
    fi
    sleep 5
done