Execute o processo em uma janela de tela específica, se existir, caso contrário, crie essa tela e faça isso

1

Tenho pouca experiência com screen e descobri recentemente que possui janelas. Antes disso, eu estava apenas criando uma nova sessão para cada processo que eu precisava executar (eu sei, certo?). No entanto, agora que descobri, quero que meus processos sejam executados em uma única tela. Na inicialização, vários processos precisam ser executados no Windows nesta tela, mas não consigo descobrir como executá-los em uma janela específica, criando uma sessão se ela não existir. Eu gostaria que os processos ocupassem janelas específicas (8 e 9).

Eu sei que screen -dmS main bash executará o bash em uma sessão de tela chamada main, no entanto, isso sempre criará uma nova sessão. Não sei o que executar para que o bash seja executado na janela 9 em uma sessão chamada main , tenha ou não existido anteriormente, com apenas uma sessão main existente depois.

Que comando (s) eu preciso executar na inicialização para que isso aconteça?

    
por Bab 28.01.2017 / 19:23

1 resposta

0

Você precisa usar -ls flag.

bash-4.3$ screen -dmS main bash
bash-4.3$ screen -ls
There is a screen on:
    7144.main   (2017年01月28日 20时05分05秒) (Detached)
1 Socket in /var/run/screen/S-xieerqi.

-ls mostrará as sessões existentes e você poderá anexá-las novamente com -x flag. Script-wise, você poderia fazer algo assim:

bash-4.3$ my_session=$(screen -ls | awk '/[[:digit:]]\.main/{print $1}')
bash-4.3$ screen -x $my_session
    
por 29.01.2017 / 04:06