captura o status de saída da tela

2

Eu tenho um comando de longa execução que estou executando em screen para poder interagir com ele quando encontrar erros. Mas eu também gostaria de poder iniciá-lo através de outro shell script (que alcança algo semelhante ao GNU paralelo), então eu tenho usado screen -m -D mycommand , que funciona muito bem, exceto que eu não consigo descobrir como obter o status de saída - o que é importante para reiniciar trabalhos que falharam.

Existe uma maneira de obter screen para retornar o status de saída de seu processo filho? Apenas para ter um caso de teste para brincar:

screen -mD sh -c "exit 1"
echo $?
# prints 0; would like something that prints 1
    
por arcticmac 31.07.2015 / 22:05

1 resposta

2

Você pode tentar usar o sinalizador -L :

-L: tells screen to turn on automatic output logging for the windows.

Para mim, isso cria um arquivo chamado screenlog.0 no diretório de trabalho que registra toda a saída; se você, então, executar tela como

screen -mDL sh -c 'your_command || echo $?'

ou possivelmente

screen -mDL sh -c 'your_command; echo $?'

você pode então examinar a última linha desse arquivo para um código de saída ... Talvez o resultado completo seja algo como

screen -mDL sh -c 'your_command; echo $?' && tail -1 screenlog.0
    
por 31.07.2015 / 22:34