重新啟動崩潰遊戲的 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 作業可以很好地啟動遊戲伺服器,但是如果遊戲正在運行並崩潰,則 cronjob 將無法工作並且遊戲不會重新啟動。

然而,遊戲已經在螢幕名稱 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

我熟悉使用螢幕,但我不太確定你想在這裡做什麼。如果您希望伺服器自動重新啟動,那麼您實際上並不需要 screen。也許您更喜歡在崩潰後立即重新啟動的腳本(而不是 5 秒後)。

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

相關內容