重新启动崩溃游戏的 Cron Job

重新启动崩溃游戏的 Cron Job

因此,我正在托管一个非常不稳定并且在 Linux 上经常崩溃的游戏,我制作了这个 cronjob 来在游戏失败时重新启动屏幕和游戏:

#!/bin/bash
for t in {1..12} do
  if [ -z "$(ps -C game | grep game)" ]
  then
    /usr/bin/screen -d -m -S ss13 /usr/local/bin/game /home/gamefolder/game/game.dmb 1336
  fi
  sleep 5 
done

如果屏幕名称不存在,cron 作业可以很好地启动游戏服务器,但是如果游戏正在运行并崩溃,cron 作业将无法工作,并且游戏不会重新启动。

但是游戏已经在屏幕名称 ss13 中运行,屏幕本身没有崩溃,只是游戏崩溃了。所以我认为发生的事情是,当游戏崩溃时,它会尝试创建一个包含游戏的新屏幕,但显然无法做到。有没有更好的方法来做到这一点?这里还是一个 Linux 新手。

答案1

这实际上不是一份工作cron,我建议在screen会话中运行类似下面的操作:

while :; do
  /usr/local/bin/game /home/gamefolder/game/game.dmb 1336
done

:是 的简写true

以上内容假设游戏未启用守护进程。在这种情况下使用:

while :; do
  if [ -z "$(ps -C game | grep game)" ]; then
    /usr/local/bin/game /home/gamefolder/game/game.dmb 1336
  fi
  sleep 5
done

答案2

我熟悉使用屏幕,但我不太清楚你在这里想做什么。如果你想让服务器自动重启,那么你真的不需要屏幕。也许你更喜欢在崩溃后立即重启的脚本(而不是 5 秒后)。

#!/bin/bash
for t in {1..12}
do
    /usr/local/bin/game /home/gamefolder /game/game.dmb 1336
done

相关内容