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