Como posso iniciar várias sessões de tela automaticamente?

21

Estou tentando criar um comando que é iniciado screen, cria quatro sessões com nomes diferentes e executa quatro comandos diferentes.

Eu sei como fazer isso manualmente:

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
4. CTRL-A C
5. (GOTO 2)

Posso fazer isso com um script bash ou algo assim? Como eu faria isso?

hughes
fonte

Respostas:

15

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"gerará uma tela sendo executada $COMMANDem segundo plano.

Você pode ver sessões ativas screen -lse reconectar com screen -r "$SESSION_NAME".

Sessões mortas podem ser mortas com screen -wipe.

LawrenceC
fonte
Isso finaliza o trabalho!
Hughes
1
Este comando cria uma nova sessão de tela para cada comando. Ele não pode ser usado para criar uma sessão de tela única contendo uma janela para cada comando (como as etapas manuais da pergunta). Portanto, ele não responde à pergunta, e a .screenrcresposta abaixo deveria ter sido aceita.
Tey '27 de
existe alguma vantagem real no multi-windows-one-session se tudo o que você faz é manter barato algo em execução em segundo plano?
LawrenceC
29

Para iniciar várias sessões automaticamente, configure um .screenrcarquivo, um arquivo de configuração para a tela. Nele, você pode criar sessões, iniciar programas, alterar o diretório de trabalho etc. Eu o uso para inicializar minha sessão na tela.

Exemplo simples para um arquivo .screenrc:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

Os screencomandos acima de cada um criam uma sessão de tela. -tdefine o título da sessão; o restante da linha é o comando a ser executado e seus parâmetros.

Assim, a primeira e a segunda screenlinha iniciam uma sessão e iniciam vimdentro. O terceiro apenas inicia uma sessão e o envia imediatamente. chdiraltera o diretório de trabalho para todas as sessões subseqüentes.

Se você quiser ter vários .screenrcarquivos, apenas nomeie-os da maneira que desejar e selecione um com screen -c myscreenrc.

sleske
fonte
5

Você pode usar as opções d, m, S juntas:

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S: Para criar uma tela

d: desanexar de uma tela

m: Para impor a criação da tela, independentemente de a tela ser chamada de outra tela ou não.

aliasav
fonte
3
Interessante, que você possa escrever assim, em vez de screen -dmS s1etc. Eu não sabia que, ao agrupar opções, aquela com argumento não precisa ser a última.
Tomasz Gandor