问题描述
嗨,我正在运行带有重启插件的 minecraft 服务器,但它需要程序自行重启,所以我使用了 While true sleep 5 循环,它似乎工作正常,但一段时间后它只是开始一次又一次地打开从而在某个时候可以一直使用 100% 的 cpu。
如何让它在服务器关闭或崩溃之前不再启动程序?
#!/bin/sh
while true
do
java -xms1G -Xmx6G -jar server.jar
sleep 5
done
由于 sleep 在它一次又一次地不断打开后设置为 5,我看到它说每 5 秒启动一次 minecraft 服务器失败,但它已经在运行,我希望它只在程序运行时运行 while 循环没有运行。
解决方法
使用带有 -f
标志的 pgrep,您可以使用一些参数搜索正在运行的进程。您可以使用它来检查服务器是否已经在运行。
例如:
#!/bin/bash
while true
do
if ! pgrep -f server.jar
then
java -Xms1G -Xmx6G -jar server.jar
fi
sleep 5
done