Então, eu tenho um loop while:
cat live_hosts | while read host; do \
sortstuff.sh -a "$host" > sortedstuff-"$host"; done
Mas isso pode levar muito tempo. Como eu usaria o GNU Parallel para esse loop while?
shell-script
files
gnu-parallel
Proletariado
fonte
fonte
tee
comparallel
ao colocar a saída emsortedstuff
? Para que eu possa ver a saída como ela é.>
com| tee
por exemplo, o primeiro comando torna-separallel "sortstuff.sh -a {} | tee sortedstuff-{}" <live_hosts
Como um cara do Unix da velha escola "faça uma coisa e faça bem", eu colocaria o material de substituição de string em um script de wrapper:
Se você chamá-lo
wrapper.sh
, oparallel
comando para chamá-lo seria:Observe que você não precisa
cat
desse tipo de coisa, o que salva uma invocação de programa externo.fonte
Você não precisa
parallel
, pois o corpo do loop não depende de iterações anteriores. Basta iniciar um novo processo em segundo plano para cada host.parallel
torna mais fácil gerenciar certos aspectos; você pode limitar o número de trabalhos em execução em paralelo com mais facilidade.fonte
wc -l live_hosts
for mais do que o número de eixos de disco ou núcleos de CPU - dependendo se a tarefa é de E / S ou ligada à CPU -, você terá muitas vantagens do paralelismo com uma solução como essa. A capacidade deparallel
limitar o número de trabalhos não é apenas agradável, é quase essencial, se a velocidade do processamento for o seu objetivo.