1. Resumo
Não entendo como posso combinar comandos paralelos e sequenciais no Linux.
2. Comportamento esperado
Pseudocódigo :
pip install pipenv
sequencial pipenv install --dev
tarefa paralela
npm install -g grunt-cli
sequencial npm install
Equivalente de trabalho em lote do Windows :
start cmd /C "pip install pipenv & pipenv install --dev"
start cmd /C "npm install -g grunt-cli & npm install"
3. Não ajudou
- Eu não acho que
&
ewait
pode resolver este problema, veja o comentário rsaw . - Eu li que o paralelo GNU - é a melhor maneira para tarefas paralelas , mas não consigo encontrar qual sintaxe preciso usar no paralelo GNU , que resolva essa tarefa.
Eu tento parallelshell :
parallelshell "pip install pipenv && pipenv install --dev" "npm install -g grunt-cli && npm install"
arquivo completo
.sh
:git clone --depth 1 https://github.com/Kristinita/KristinitaPelican wait cd KristinitaPelican wait parallelshell "pip install pipenv && pipenv install --dev" "npm install -g grunt-cli && npm install"
Mas no primeiro
pipenv install --dev
comando, corra para mim, entãonpm install
. É sequencial, não paralelo.
Simplesmente com GNU
parallel
:O equivalente no estilo Unix de seus comandos do Windows é o seguinte:
Isso inicia dois sub-shells em segundo plano, um executando
pip
seguido porpipenv
(se forpip
concluído sem erro) e o outro executando os doisnpm
comandos. Ambos os conjuntos de saídas de comandos são redirecionados para arquivos de log, para manter as coisas inteligíveis.Se você precisar esperar que todos esses comandos sejam concluídos antes de continuar, use
como você já descobriu.
Ao sequenciar e paralelizar tarefas usando um shell estilo POSIX, há duas ferramentas à sua disposição:
&
no final de um comando) e permite aguardar sua conclusão (usandowait
)Isso é bom o suficiente para requisitos simples, como sua tarefa atual, e pode levar você a um longo caminho. Existem ferramentas mais avançadas para casos de uso mais complexos; O GNU Parallel é um deles, também vale a pena procurar ferramentas de lote se você precisar de um controle de recursos mais preciso.