Como executar um segundo comando na mesma sessão de tela

11

Estou começando o primeiro comando na tela assim:

screen -d -m -S testen -t lalala watch df -h

que me dá uma sessão de tela sendo executada em segundo plano e posso reconectar mais tarde.

Como posso executar um segundo comando em uma nova janela na mesma sessão de tela?

    
por TTM 05.05.2011 / 15:06

4 respostas

11

Inicie uma sessão de tela nomeada ( -S ) com uma janela nomeada ( -t ) adaptando-se ao tamanho do terminal ( -A ) no modo desanexado ( -d -m ):

screen -S mySessionName -t myWinName0 -A -d -m

Inicie outra janela nomeada ( -t ) na mesma sessão de tela ( -S ):

screen -S mySessionName -X screen -t myWinName2

Coloque alguns comandos ( -X stuff $'cmds' ) na primeira janela nomeada ( -p ) na sessão ( -S ):

screen -S mySessionName -p myWinName0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'

Coloque alguns comandos ( -X stuff $'cmds' ) na segunda janela nomeada ( -p ) na sessão ( -S ):

screen -S mySessionName -p myWinName1 -X stuff $'echo myWinName1\necho cmd1\necho cmd2\n'

Relacione as sessões de tela e reconecte para ver o que aconteceu:

screen -ls
screen -r mySessionName

Nota: O avanço de linha ( \n ) simula pressionando Enter . Você pode usar ponto e vírgula para separar os comandos também.

    
por 21.10.2011 / 18:20
4

Tentativa acima, mas o segundo comando não foi executado na segunda janela. Eu ajustei ligeiramente o exemplo usando o número da janela, em vez do nome da janela:

  1. criar sessão

    screen -S mySessionName -t 0 -A -d -m
    
  2. criar segunda janela

    screen -S mySessionName -X screen -t 1
    
  3. envia o comando para a primeira janela

    screen -S mySessionName -p 0 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  4. envia o comando para a segunda janela

    screen -S mySessionName -p 1 -X stuff $'echo myWinName0\necho cmd1\necho cmd2\n'
    
  5. agora verifique se o comando foi executado na primeira janela

    screen -R mySessionName -p 0
    
  6. agora verifique se o comando foi executado na segunda janela

    screen -R mySessionName -p 1
    

Testado com a tela 4.00.03 (CENTOS 6.3 x64).

    
por 17.08.2012 / 18:03
3

Dentro da tela:

  • Ctrl-A , c para abrir uma nova janela da shell
  • Ctrl-A , :screen newcmd para executar newcmd

Fora:

screen -X testen "screen newcmd"
    
por 05.05.2011 / 15:31
1

Você pode configurar um .screenrc alternativo através do argumento -c . Neste novo screenrc você pode configurar vários comandos para iniciar quando a sessão de tela é inicializada.

No final desta alternativa, o screenrc coloca os seguintes comandos:

screen 1 cmd1 args
screen 2 cmd2 args

Não é necessário configurar um arquivo de configuração alternativo se você planeja executar apenas um tipo de sessão de tela e os comandos padrão são sempre perfeitos.

    
por 23.10.2011 / 04:02