Eu tenho
parallel --j 2 -- "sh script1" "sh script2"
onde script1
e script2
faça login nos arquivos log1
elog2
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 tail
de 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 parallel
trabalhos.
Se você precisar trazer o parallel
para o primeiro plano, mate o tail
e digite fg
. Para enviá-lo para segundo plano novamente (por exemplo, para que você possa correr tail
mais 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 bash
e pesquise (all-caps) JOB CONTROL
.