Inicie um plano de fundo screen nomeie a sessão "mysession":
screen -d -m -S mysession
Executar top na primeira janela
screen -S mysession -X exec top
Inicie outra janela, nomeie-a como "win1" e execute " vmstat 10 " nela
screen -S mysession -X screen -t win1
screen -S mysession -p win1 -X exec vmstat 10
Inicie outra janela, nomeie-a como "win2" e execute " iostat 30 " nela
screen -S mysession -X screen -t win2
screen -S mysession -p win2 -X exec iostat 30
Para se conectar e ver a sessão:
screen -x -S mysession
Se algum dos programas for encerrado, a janela não será fechada, pois screen terá iniciado um shell em cada um (que você pode usar se necessário).
- OU - se você quer apenas um único comando por janela, ou quer limpar mais facilmente após a conclusão dos processos, não execute o shell padrão em cada janela, apenas o comando (s):
screen -d -m -S mysession top
screen -S mysession -p 0 -X title win0 # optional!
screen -S mysession -X screen -t win1 vmstat 10
screen -S mysession -X screen -t win2 iostat 30
screen "terminará" a janela (possivelmente deixando o conteúdo da janela intacto, veja zombie abaixo) quando o processo terminar, ou para encerrá-lo:
screen -S mysession -X quit # nuke whole the session
ou
screen -S mysession -p win2 -X kill
screen -S mysession -p win1 -X kill
screen -S mysession -p 0 -X kill
(isso pode ou não matar qualquer processo em execução, screen enviará um SIGHUP a cada um deles)
Se você quiser que screen feche automaticamente as janelas e saia quando todos os processos estiverem concluídos, adicione isso depois de criar a sessão (se você não tiver zombie definido em .screenrc , isso é provavelmente o padrão de qualquer maneira):
screen -S mysession -X zombie
Isso impede que o "zumbi" feche e ressuscite as chaves; as janelas, em seguida, desaparecem quando o comando em cada janela termina, screen se fechará quando a última janela terminar. (Você pode precisar usar defzombie em vez de zombie , mas somente este último funciona para mim, apesar da documentação em contrário.)