Como executar comandos depois de antera no shell script usando o gnu parallel

0

Eu tenho um comando como este

time parallel -j 40 :::: filetoprocess.sh
time parallel -j 40 :::: filetoprocess2.sh

Eu quero executar esses comandos um após o outro, ou seja, quando time parallel -j 40 :::: filetoprocess.sh finsih, em seguida, time parallel -j 40 :::: filetoprocess2.sh , mas aqui ambos correm paralelamente Eu tenho escrever esses comandos dentro do arquivo de script de shell, por exemplo, abc.sh e, em seguida, eu executo isso como nohup sh abc.sh &

aqui está o que eu estou fazendo com sh creatingcommds.sh 74.9997891 76.1575846 31.6355471 30.6397432 /cats/rallisdata/cropdatazone1/new43REQ 43REQ_20170513 sleep 2 && time parallel -j 40 :::: filetoprocess2.sh && sleep 2 && sh creatingcommds.sh 74.9997891 76.1575846 31.6355471 30.6397432 /cats/rallisdata/cropdatazone1/new43REQ 43REQ_20170523 sleep 2 && time parallel -j 40 :::: filetoprocess3.sh

creatingcommds.sh file cria 80 que é usado por time parallel -j 40 :::: filetoprocess2.sh mas aqui eu recebo o arquivo não encontrado erro.

    
por Gaurav Singh 06.07.2017 / 10:28

1 resposta

0

O que você precisa é o && como George mencionou no comentário já.

& amp; & amp; significa que o próximo comando listado será executado apenas se o comando anterior retornou um valor de saída 0. Você também pode usar || se desejar executar o próximo comando apenas se o primeiro falhar - ou se um valor não for 0.

Então, para o seu caso, seria:

time parallel -j 40 :::: filetoprocess.sh && time parallel -j 40 :::: filetoprocess2.sh

O que significa que ele será executado assim que o primeiro comando for concluído com sucesso e não será executado se o primeiro falhar.

Experimente com

echo test 1 'sleep 2' && echo test 2 'sleep 2' && echo test 3 'sleep 2'
    
por Ziazis 06.07.2017 / 11:51