Existe uma maneira de obter stdout e stderr em tempo real a partir de um processo gerado pelo psexec nos mesmos streams (pipes) do psexec

1

A minha pergunta é muito parecida com esta questão aqui com uma restrição adicional relacionada a tempos de espera

Estou usando o Jenkins para iniciar alguns testes automatizados e capturar o stdout (e stderr) dos testes em execução. Como eu já respondi, determinei como fazer com que stdout e stderr sejam exibidos assim que os testes terminarem, no entanto, o método que descrevo imprime tudo no terminal quando o processo termina sua execução, e não como está.

Meu problema ocorre porque meus trabalhos de teste estão em um tempo limite de 15 minutos (o script de teste pode demorar 1,5 ou mais horas para ser executado) se Jenkins não vir nenhuma atividade no canal de saída. Eu não quero aumentar substancialmente esse tempo limite porque os testes podem travar.

Existe uma maneira de obter os fluxos stdout e stderr do processo filho criado pelo psexec na janela do terminal em que o psexec está sendo executado em tempo real?

psexec é iniciado por um script em lote nas máquinas de teste, não sendo usado em uma rede.

Eu considerei executar psexec com o sinalizador -d e canalizar a saída do processo filho para um arquivo e, em seguida, apenas executar um loop no script em lote que aguarda a conclusão do processo, isso parece ser mais um hack e deve ser uma opção de último recurso.

runas não é uma boa alternativa, pois o Jenkins precisa saber quando os scripts de teste são finalizados. Eu poderia fazer semelhante ao que eu mencionei acima com o PID e um loop de espera, mas isso ainda é um truque.

Eu também estou me perguntando se seria possível simplesmente passar os strings de E / S do psexec para o filho e corrigir a saída diretamente para Jenkins dessa forma, mas não tenho idéia de como fazer isso.

    
por Tuffwer 12.02.2016 / 01:49

0 respostas