Eu tenho uma screen
instância em execução e precisaria executar algum código dentro do screen
e obter o resultado no meu script.
A primeira parte é bem fácil, eu apenas screen -S session_name -X eval 'stuff "$cmd"\015'
.
(Modifiquei uma linha que encontrei em um script )
A segunda parte, obtendo a saída, é mais complicada. Como posso obter toda a saída, independentemente do tamanho?
bash
logs
gnu-screen
recording
1ace
fonte
fonte
screen -X stuff …
; uma pergunta semelhante à sua .stuff
, e foi isso que eu tive problemas para entender.Respostas:
Você pode começar
screen
com a-L
opção Isso fará com que a tela crie um arquivoscreenlog.n
(a parte n é numérica, começando com um zero) no diretório de trabalho atual.No seu caso, isso seria algo como:
screen -S session_name -L -X eval 'stuff "$cmd"\015'
Desde que você se lembre de limpar depois, isso deve corresponder ao que você procura.
Para a última linha do log, ele pode ser obtido facilmente com
tail -1 screenlog.0
ou o log inteiro pode ser analisado da maneira que desejar.fonte
screen
. Comando que dei foi apenas para enviar o comando para iniciar oscreen
, eu useiscreen -dmS name program
;-)Mais uma nuance que pode ser útil no futuro: se você estiver em uma sessão de tela, poderá solicitar interativamente a criação do arquivo de log. Pressione ctrl- a H(Control-A seguido de H maiúsculo) para solicitar que a tela comece a despejar qualquer janela em que você esteja em um arquivo de log.
fonte
man screen
, digamos, tenho que digitar o CA H, sem o controle somente para o H. Sad, que isso não captura o log anterior.