na verdade, descobri o que preciso fazer:
parallel --j 2 -- "sh script1" "sh script2" &
PID=$!
tail --pid=$PID -f log1 log2
Eu tenho
parallel --j 2 -- "sh script1" "sh script2"
em que script1
e script2
fazem login nos arquivos log1
e log2
Eu gostaria de mudar isso para:
parallel --j 3 -- "sh script1" "sh script2" "tail -f log1 log2"
A razão para usar o tail é quando eu permito que os dois scripts saiam na tela ao mesmo tempo - a saída se torna uma bagunça e eu perco os problemas com o cursor etc - eu preciso reiniciar o terminal quase toda vez que executo. / p>
O problema é que agora isso vai durar para sempre e eu gostaria que a cauda saísse quando script1 e script2 forem concluídos. Como eu posso fazer isso?
Isso pode também não ser o que você quer, mas que tal:
parallel --j 2 -- "sh script1" "sh script2"; tail log1 log2
Quando os dois trabalhos estiverem concluídos, você receberá o tail
dos dois arquivos de log que não aguardam.
Pressione Ctrl + C uma vez que os scripts estejam prontos para matar a cauda manualmente.
parallel --j 2 -- "sh script1" "sh script2" & tail -f log1 log2
Isso executa parallel ...
no segundo plano e, em seguida, executa tail ...
.
Pressionar Ctrl-C na cauda não afeta os trabalhos parallel
.
Se você precisar colocar parallel
em primeiro plano, mate o tail
e digite fg
. Para enviá-lo para o fundo novamente (por exemplo, para que você possa executar tail
mais uma vez), pressione Ctrl-Z e digite bg
. Ou você pode matá-lo com kill %%
Consulte a documentação da sua shell para mais detalhes. por exemplo. Se você estiver usando bash, execute man bash
e procure por (all-caps) JOB CONTROL
.
Tags tail