Criando um script de shell para uso com 'screen'?

2

Eu tenho trabalhado na criação de um shell script por um tempo, navegando em vários fóruns incluindo este, e usando todos os tipos de termos de busca sem sorte. Espero não estar criando uma pergunta duplicada.

Temos um servidor de jogo e precisamos inicializar a tela manualmente após uma reinicialização ou uma falha, mas gostaríamos de agrupar nossos poucos comandos em um script para diminuir o tempo de inatividade. O que eu gostaria de fazer é criar um script que crie uma sessão de tela, alterne para ela e execute o script de shell dentro da nova sessão.

Eu tentei o código abaixo no script de shell.

#!/bin/sh
screen -S tf2
./startserver.sh

Quando executo o script, ele cria a tela 'tf2' e entra na sessão como eu queria. O servidor não inicia onde eu queria, no entanto, ele inicia fora da sessão de tela onde eu o executei. Precisamos que ele esteja dentro da sessão de tela para que o nosso servidor de jogos possa estar on-line sem que ninguém atenda ao terminal.

Ainda não sou o melhor com scripts de shell, mas estou disposto a aprender, estou fazendo algo errado? Existe outra maneira que eu deveria estar fazendo isso?

    
por S3ntri 28.11.2016 / 23:54

1 resposta

3

Como afirmado em SINOPSE de man screen , se você quiser executar um comando na tela, ele precisa ser anexado à tela de emissão de comandos. Então, no seu caso, seria parecido com

 #!/bin/sh
screen -S tf2 ./startserver.sh

No entanto, como eu não sei se o seu shell-script está no diretório de trabalho da tela, é mais inteligente fazer isso

 #!/bin/sh
screen -S tf2 /full/path/to/startserver.sh
    
por db429 29.11.2016 / 00:59