Executando o servidor de jogos do bash sem esperar pela entrada

1

Eu tenho um script simples que recebe comandos para iniciar, parar, reiniciar e retornar o status de um servidor de jogo (SA: MP). O site fornece a solução para usar este comando:

./samp03svr &

O que funciona bem e dandy, no entanto, quando o script executa isso, ele mantém e aguarda a entrada do usuário (pressionando ENTER), que então continua a execução do script.

Não consigo encontrar uma maneira de manter a execução dos scripts sem esperar por qualquer entrada do usuário. Eu tenho procurado por cerca de 5 horas agora e tentei pelo menos 20 coisas diferentes, incluindo a tela de execução. A tela de execução funcionou apenas não fornece a coisa exata que estou procurando. O script também coleta o ID do processo imediatamente depois disso:

mv ./server_log.txt ./logs/server_$NOW.txt
mv ./mysql_log.txt ./logs/mysql_$NOW.txt
./samp03svr <<< echo &
pid=$!
echo $pid > $pidf
echo -e "The server has been started successfully"

A mensagem que aparece esperando por RETURN é:

Started server on port: 7777, with maxplayers: 30 lanmode is OFF.

O servidor está executando o Ubuntu 12.04 de 64 bits.

Obrigado antecipadamente.

    
por MrTeddy 02.04.2014 / 08:03

3 respostas

0

Como o samp03svr exibe o texto, você precisa redirecionar a saída para nulo

 ./samp03svr > /dev/null 2>&1 &
    
por Chaser98 02.04.2014 / 18:22
0

Você pode tentar escrever um caractere newline ( \n ) na entrada padrão antes de executar o servidor.

Este é um exemplo que escreve "foo" e canaliza para o std.in do próximo comando

echo $'foo' | while read x ; do echo $x ; done

Então, no seu caso, você poderia fazer

echo $'\n' | ./samp03svr

Exemplo de citações de nova linha retirado de aqui .

    
por Eero Aaltonen 02.04.2014 / 09:07
0

Você pode colar esse script em algum lugar ou a parte do script em que está tentando ler a tecla ENTER.

Tente também isso, supondo que esteja aguardando nova linha:

% bl0ck_qu0te%     
por c0rp 02.04.2014 / 10:05