1
Servidores / Re:Aplicação fecha sozinha (jogo 7 Days to Die)
« Online: 14 de Fevereiro de 2016, 19:29 »
Espero que você saiba programar para adaptar o código que eu estou postando aqui.
Uma das possíveis causas da aplicação fechar é da comunicação por SSH cair. Para resolver isso mude o comando de "sudo 7dtd.sh Start Servidor" para "sudo nohup 7dtd.sh Start Servidor". Desta forma mesmo se o SSH cair o jogo não vai fechar (ver man nohup).
No cron você deve chamar um script para testar se o programa está rodando. No arquivo /etc/crontab adicione a seguinte linha "* * * * * root /caminho_para_o_script". Desta forma o cron vai chamar o script uma vez por minuto.
Por fim precisa fazer o script. Vamos por partes. Primeiro precisamos de um comando que verifique se o serviço está rodando, o comando é "ps a | grep "sudo nohup 7dtd.sh Start Servidor" | wc -l > ehdois.txt". Esse comando exibe os processos rodando (ps a), seleciona apenas as linhas que tem a string "sudo nohup 7dtd.sh Start Servidor" (grep ...), conta as linhas (wc -l) e coloca o resultado no arquivo ehdois.txt. Por fim deve-se comparar o resultado do arquivo ehdois.txt para ver se ele tem como conteúdo o número 2, para isso crie um arquivo chamado dois.txt (echo "2" > dois.txt) e compare para ver se tem diferença nos arquivos (diff ehdois.txt dois.txt). Note que o número 1 no arquivo significa apenas o comando grep procurando a string específica, o resultado 2 significa o grep e o serviço rodando (rode o comando "ps a" com o serviço rodando para entender melhor).
Vamos finalmente para o script:
#!/bin/bash
diferenca=$(diff dois.txt ehdois.txt)
if [ $diferenca -ne 0 ] then
sudo nohup 7dtd.sh Start Servidor
Eu não testei todo o processo. Mas deve funcionar. Uma parte que pode possivelmente não funcionar é o comando ps a, talvez você deva usar o comando ps ax para exibir todos os processos. Outra coisa, talvez o processo não seja encontrado pelo comando do script e você precise saber o nome do processo exato, para isso use o comando ps ax e encontre o processo desejado.
Se precisar de mais ajuda poste aqui que eu detalho mais.
Uma das possíveis causas da aplicação fechar é da comunicação por SSH cair. Para resolver isso mude o comando de "sudo 7dtd.sh Start Servidor" para "sudo nohup 7dtd.sh Start Servidor". Desta forma mesmo se o SSH cair o jogo não vai fechar (ver man nohup).
No cron você deve chamar um script para testar se o programa está rodando. No arquivo /etc/crontab adicione a seguinte linha "* * * * * root /caminho_para_o_script". Desta forma o cron vai chamar o script uma vez por minuto.
Por fim precisa fazer o script. Vamos por partes. Primeiro precisamos de um comando que verifique se o serviço está rodando, o comando é "ps a | grep "sudo nohup 7dtd.sh Start Servidor" | wc -l > ehdois.txt". Esse comando exibe os processos rodando (ps a), seleciona apenas as linhas que tem a string "sudo nohup 7dtd.sh Start Servidor" (grep ...), conta as linhas (wc -l) e coloca o resultado no arquivo ehdois.txt. Por fim deve-se comparar o resultado do arquivo ehdois.txt para ver se ele tem como conteúdo o número 2, para isso crie um arquivo chamado dois.txt (echo "2" > dois.txt) e compare para ver se tem diferença nos arquivos (diff ehdois.txt dois.txt). Note que o número 1 no arquivo significa apenas o comando grep procurando a string específica, o resultado 2 significa o grep e o serviço rodando (rode o comando "ps a" com o serviço rodando para entender melhor).
Vamos finalmente para o script:
#!/bin/bash
diferenca=$(diff dois.txt ehdois.txt)
if [ $diferenca -ne 0 ] then
sudo nohup 7dtd.sh Start Servidor
Eu não testei todo o processo. Mas deve funcionar. Uma parte que pode possivelmente não funcionar é o comando ps a, talvez você deva usar o comando ps ax para exibir todos os processos. Outra coisa, talvez o processo não seja encontrado pelo comando do script e você precise saber o nome do processo exato, para isso use o comando ps ax e encontre o processo desejado.
Se precisar de mais ajuda poste aqui que eu detalho mais.