Em qual host esse comando paralelo está travado?

2

Eu corro este comando paralelo:

parallel -q -j0 ssh {} 'echo {}; tmp/myscript' ::: host1 host2 host3 ....

A linha acima mostra um resultado para a maioria dos hosts.

Infelizmente, o comando paralelo trava em algum host. O script parece estar em um loop infinito.

Como posso detectar em qual host ele trava?

Todos os hosts são alcançáveis. Eu testei isso com este comando:

parallel -q -j0 ssh {} 'echo {}; date' ::: host1 host2 host3 ....
    
por guettli 08.03.2018 / 11:52

3 respostas

2

Eu usaria --timeout 1000% : se um trabalho leva 10 vezes mais que o tempo de execução típico, mate-o.

Então eu usaria --joblog mylog para ver qual trabalho expirou (sair val = -1).

Você também pode usar --nonall (em vez de -q ssh ) e --tag para ver quais trabalhos foram concluídos (e, assim, deduzir qual deles está preso).

    
por 08.03.2018 / 13:11
1

Você pode dizer com o comando ps .

Execute seu script novamente, aguarde até que ele seja interrompido e execute:

ps -elf | grep ssh

Você deve ver o processo ssh para o nó em que ele está "suspenso".

    
por 08.03.2018 / 11:59
0

Eu encontrei uma solução sem paralelos.

Eu corro se

for host in host1 host2 ...; do echo $host; ssh $host tmp/myscript; echo; done

Desta forma, vejo onde está pendurado.

    
por 12.03.2018 / 12:11