sai pela cauda quando outro processo é feito

2

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?

    
por gsf 03.11.2015 / 20:23

5 respostas

1

na verdade, descobri o que preciso fazer:

parallel --j 2 -- "sh script1" "sh script2" &
PID=$!
tail --pid=$PID -f log1 log2
    
por 05.11.2015 / 02:55
2

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.

    
por 03.11.2015 / 21:14
0

Eu usaria Multitail ou tmux .

    
por 03.11.2015 / 22:46
0

Pressione Ctrl + C uma vez que os scripts estejam prontos para matar a cauda manualmente.

    
por 03.11.2015 / 21:01
0

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 .

    
por 04.11.2015 / 00:00

Tags