Como escrever um script de shell para executar múltiplos comandos em diferentes sessões de tela?

6

Meu objetivo é escrever um script zsh para criar várias sessões screen e executar comandos separados em cada uma delas. Também gostaria de verificar no início do meu script se existem telas com tarefas em execução e finalizar todas elas que estão ociosas. Além disso, se possível, gostaria de ter uma maneira de gravar o stdout da tela individual e obter seu número de ID. Até agora eu tentei o seguinte:

### Script for running everything in screens ###
killall -15 screen ## We make sure that no screens are running for now
#bkg_array = ("TopJets" "BosonJets" "DiBoson" "TTbar")

screen -dmS "MYSCREEN"
screen -S "MYSCREEN" -p 0 -X stuff 'echo "The array has of elements."\n'

No entanto, parece que não consigo enviar o pressionamento de tecla para pressionar Enter ; Como posso conseguir esse efeito? Além disso, sem a opção -p , o comando não é enviado para a tela. Depois de pressionar Ctrl + V + Enter , os caracteres ^M foram colados na tela e ele pressionou entrar na sessão de tela, mas não tenho ideia de por que isso funcionou.

Obrigado pela sua ajuda, sinta-se à vontade para apontar quaisquer ambiguidades.

    
por Vesnog 21.08.2014 / 16:30

2 respostas

1

Acho que, enquanto a tela não interpreta caracteres nomeados, como \n , ela cuida das fugas octal. Então, em vez de stuff 'echo "The array has of elements."\n' , você poderia usar:

stuff 'echo "The array has of elements."'2
    
por 31.03.2015 / 20:18
0

Então, o que eu faço é isso:

screen -dmS SCREEN_SESSION_NAME -t TAB_NAME ~/bin/my_first_prog.sh ; screen -S SCREEN_SESSION_NAME -X screen -t TAB_NAME2 ~/bin/my_second_prog.sh

No site, você terá uma sessão de tela chamada SCREEN_SESSION_NAME, com duas guias. Para sair de tudo Eu mato os programas graciosamente (mata -1) e a execução

screen -S SCREEN_SESSION_NAME -X quit

    
por 05.12.2017 / 15:47