Rastreando processos filho sequencialmente

1

Estou executando alguns comandos em um servidor remoto, por sshpass .

  gnome-terminal --maximize 
  --tab --title='aTask' -e "sshpass -p "afsd@#$5u89f"  ssh [email protected] 'command1 && command2'" \

Então, minha pergunta é: e se meu último comando for mvn clean install , como posso saber se a compilação foi bem-sucedida?

De certa forma, preciso rastrear meu primeiro processo filho se ele concluiu todos os comandos com êxito, para que eu possa iniciar outro processo filho sequencialmente.

    
por MayankD 13.04.2018 / 14:45

1 resposta

2

Se você deseja executar sequencialmente, o código de saída é tudo que você precisa;

command && echo "it worked"

ou

command || echo "we are having a bad day"

Se o gnome-terminal ou o sshpass não estiver retornando o arquivo de código de retorno correto, um relatório de bug e usar uma alternativa.

Se você deseja executar em paralelo, use xargs -P ou parallel onde o

exit status is the combination of the exit statuses of each command ran, ORed together. (Thus, if any one command exits nonzero, parallel as a whole will exit nonzero.)

Se um dos seus comandos estiver retornando antes da execução, use uma alternativa ou faça com que seus comandos adotem um padrão de design assíncrono (reinvente a roda), por exemplo, anexando

 ; echo $(date) $? > task1.r

esperando que todas as tarefas sejam concluídas;

while [ $(cat task*.r 2>/dev/null | wc -l) -lt $TASK_COUNT ] ; do
    sleep 1
done
grep -P " [^0]$" task*.r && echo "we are having a bad day"
    
por 13.04.2018 / 15:44