Como o samp03svr exibe o texto, você precisa redirecionar a saída para nulo
./samp03svr > /dev/null 2>&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.
Como o samp03svr exibe o texto, você precisa redirecionar a saída para nulo
./samp03svr > /dev/null 2>&1 &
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 .
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%