Cron Job que tela de botas no início


0

Eu estou tentando configurar um número de processos que iniciam durante a inicialização (servidores para jogos) com o comando abaixo como o item cron:

@reboot /usr/bin/screen -fa -d -m -S NAME COMMAND

No entanto, se o servidor falhar por qualquer motivo que a tela feche e o servidor não tiver a chance de executá-lo, ele será reiniciado automaticamente (até onde eu entendi; a tela não vê nenhum processo no soquete e, portanto, fecha).

Existe uma maneira que eu possa contornar isso, então a tela ficará lá mesmo se nada estiver sendo executado? Gosta de abrir uma concha?


Como o reinício automático é implementado? Parte do próprio código do servidor ou um script externo?
Grawity

É parte do próprio servidor, creio eu, srcds_run abre o servidor e é isso que o cron está iniciando
Pez Cuckow

Respostas:


0

O comando dado é o filho da tela, então quando sai, a janela está morta.

Você pode contornar isso iniciando um shell e, em seguida, empurrando a entrada para a janela para executar o comando, mas isso apenas altera o problema para que você fique com um prompt de shell persistente e o servidor não será reiniciado automaticamente.

Realmente, você quer executar um comando keep-alive, que então executa o servidor em que você está interessado. Há muitas ferramentas lá fora, mas o mais simples é escrever algo com shell (a menos que você queira a potência total do servidor dedicado). Ferramentas.

#!/bin/sh
while [ ! -f /home/servicename/shutdown-flagfile ]; do
  echo "Starting server [$(date)]"
  server-binary-name "$@"
  sleep 1
done

A linha 2 permite sair do loop criando um arquivo especial (com "touch"), o server-binary-name é o programa a ser realmente executado, "$ @" é passar pelas opções que o wrapper foi chamado com e sleep 1 é para que, se o servidor estiver morrendo na inicialização, você não mastigue toda a CPU repetidamente, reiniciando-o milhares de vezes por segundo, de modo que seja difícil entrar e ver o que está acontecendo. A linha de eco apenas permite que você veja quando o último servidor teve que ser reiniciado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.