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.)