Executar um comando em uma nova tela nomeada

3

Eu tenho um script que cria uma nova tela e executa um comando (dev webserver) nele.

screen -S webserver -dm sh launch_webserver.sh

No entanto, quando o comando é concluído (ou o servidor da Web é encerrado), a tela é destruída. Como posso evitar isso?

    
por Gilles 08.07.2013 / 09:30

1 resposta

2

O que você quer que aconteça quando o comando terminar? A sessão de tela termina quando não há mais comandos em execução, portanto, se você quiser manter a sessão ativa, terá que executar outro comando.

Se você quiser manter a janela ativa e executar mais comandos, execute um shell quando o comando inicial terminar.

screen -S webserver -dm sh -c 'launch_webserver.sh; echo $?; exec bash -i'

Se você quiser manter a janela apenas para ver a saída, execute um comando que aguarde, como sleep (com um argumento quase infinito) ou read (aguarde até que você pressione Enter ).

screen -S webserver -dm sh -c 'launch_webserver.sh; echo $?; read'

Se você quiser manter a sessão ao redor, mas não a janela, execute outro comando. Você terá que escrever um arquivo screenrc (o que é uma boa idéia de qualquer maneira).

screen -c /path/to/webserver.screenrc

onde /path/to/webserver.screenrc contém

sessionname webserver
screen -t webserver launch_webserver.sh
screen -t shell bash
    
por 10.07.2013 / 04:38

Tags