Eu li Como posso iniciar várias sessões de tela automaticamente? , mas não entendo a primeira resposta aceita:
screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"
No meu caso, preciso criar automaticamente uma sessão de tela para um script e, posteriormente, criar uma nova janela na mesma sessão para outro script. Manualmente, eu:
- tela de execução
- comando enter
- CTRL+A
- CTRL+C
- comando enter
- CTRL+A
- CTRL+D
Como posso fazer isso automaticamente em um script? Um exemplo simples me ajudaria muito.
Obrigado pelas respostas.
bash
display
debian
gnu-screen
Mato
fonte
fonte
Respostas:
Não sei exatamente o que você quer que aconteça - você deseja um script que cria a sessão de tela com duas janelas para dois comandos ou deseja executar um script em uma janela de tela que executa um comando e cria um novo janela para o segundo?
O segundo é fácil, então vamos começar com isso:
A execução de "tela" dentro da tela criará uma nova janela na sessão atual, não iniciará uma nova. Mas ele retornará imediatamente, portanto, após a última linha, o script será encerrado enquanto o comando2 ainda estiver em execução. E quando o comando2 for concluído, sua janela será fechada.
De qualquer maneira, a primeira interpretação da sua pergunta é um pouco mais difícil, então vamos em frente e resolva o exposto acima:
O script será iniciado
command1
, espere até terminar e, em seguida, iniciecommand2
e saia. Como se você corressecommand1 ; command2 &
, mas com a saída em outro lugar. Tenho certeza que você pode descobrir como executarcommand1
em segundo plano.fonte
screen -dm
cria uma sessão em segundo plano executando o comando que você especificou.Então, se você colocar
no seu script, você terá 2 sessões, uma editando xxx e yyy.
screen -ls
listará as sessões, às quais você pode anexar o usoscreen -r <session number>
Isso não é muito conveniente, pois é necessário encontrar o número da sessão. É aí que
-S
entra.screen -dmS session1 vi xxx
criará uma sessão desanexada chamada session1, portanto, se você alterar seu script para
você pode escolher a sessão à qual deseja anexar
screen -r session1
ouscreen -r session2
fonte
startup
e executar na janela desanexadacommand1
Adicione nova janela desanexada e execute
command2
Reconecte a sessão
startup
a qualquer momentofonte