Cron Job que reinicia o jogo travado

2
Então eu estou hospedando um jogo que é muito temperamental e pode travar muito no Linux, eu fiz este cronjob para reiniciar a tela e o jogo se falhar:

#!/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

A tarefa cron funciona bem para iniciar o servidor do jogo, caso o nome da tela não exista, no entanto, se o jogo estiver em execução e travar, o cronjob não funcionará e o jogo não será reiniciado.

No entanto, o jogo já está rodando no nome de tela ss13 e a tela em si não trava, apenas o jogo. Então eu acho que o que acontece é que quando o jogo falha, ele tenta fazer uma nova tela com o jogo, mas obviamente não pode. Existe algum método melhor de fazer isso? Ainda é um bom noob aqui.

    
por Matt 05.07.2012 / 00:19

2 respostas

2

Isso não é realmente um trabalho para cron , eu sugiro algo como o seguinte rodando dentro de uma sessão screen :

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

: é uma abreviação de true .

O acima pressupõe que o jogo não desdobra. Nesse caso, use:

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

Estou familiarizado com o uso da tela, mas não tenho certeza do que você está tentando fazer aqui. Se você quer que o servidor reinicie automaticamente, então você não precisa realmente de tela para isso. Talvez você prefira um script que reinicia imediatamente após uma falha (em vez de 5 segundos depois).

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