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?
cron
gnu-screen
Pez Cuckow
fonte
fonte
Respostas:
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.
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.
fonte