sair da cauda quando outro processo for concluído

sair da cauda quando outro processo for concluído

Eu tenho

parallel --j 2 -- "sh script1" "sh script2"

onde script1e script2faça login nos arquivos log1elog2

Eu gostaria de mudar isso para:

parallel --j 3 -- "sh script1" "sh script2" "tail -f log1 log2"

A razão para usar tail é quando eu permito que os dois scripts sejam exibidos na tela ao mesmo tempo - a saída fica uma bagunça e eu perco o cursor, etc. - preciso reiniciar o terminal quase após cada execução.

O problema, porém, é que agora isso durará para sempre e eu gostaria que tail saísse quando o script1 e o script2 terminarem. Como posso fazer isso?

Responder1

Isso podetambémnão seja o que você deseja, mas que tal:

parallel --j 2 -- "sh script1" "sh script2"; tail log1 log2

Depois que os dois trabalhos forem concluídos, você obterá a não espera tailde ambos os arquivos de log.

Responder2

na verdade, encontrei o que preciso fazer:

parallel --j 2 -- "sh script1" "sh script2" &
PID=$!
tail --pid=$PID -f log1 log2

Responder3

eu usariaMulticaudaoutmux.

Responder4

parallel --j 2 -- "sh script1" "sh script2" & tail -f log1 log2

Isso é executado parallel ...em segundo plano e depois executado tail ....

Pressionar Ctrl-Ca cauda não afetará os paralleltrabalhos.

Se você precisar trazer o parallelpara o primeiro plano, mate o taile digite fg. Para enviá-lo para segundo plano novamente (por exemplo, para que você possa correr tailmais uma vez), pressione Ctrl-Ze digite bg. Ou você pode matá-lo comkill %%

Consulte a documentação do seu shell para obter mais detalhes. por exemplo, se você estiver usando o bash, execute man bashe pesquise (all-caps) JOB CONTROL.

informação relacionada