GNU parallel é uma excelente ferramenta, muito fácil de usar, até para quem não tem muita experiência com shell script.
Basicamente, ela possibilita a execução de processos em paralelo, tanto no mesmo computador, quanto em computadores diferentes.
Um exemplo simples de uso, e que foi o meu caso: eu precisa fazer um
grep em um arquivo muito grande, de quase um milhão e meio de linhas. A rotina estava demorando cerca de 6 segundos. Então, quebrei o arquivo em vários arquivos menores (usando o
split), e executei um "grep" para cada arquivo, usando o parallel:
ls | parallel -X grep "$busca" {}
O exemplo acima, executa o "grep" para cada nome de arquivo do 'ls', fazendo a busca pelo texto representado pela variável "$busca". O pulo do gato aí, é a substituição do '{}' pelo nome do arquivo, e isso é feito pelo parallel.
Existem muitas opções de usar o parallel, inclusive para dividir o processamento em vários computadores, e explicar detalhadamente o uso desta ferramenta não é meu intuito, e sim compartilhar essa ferramenta fantástica.
O pacote pode ser baixado do site do GNU:
Atualmente, o repositório padrão do
Ubuntu não tem este pacote, ao tentar instalar:
sudo apt-get install parallel
É sugerido a instalação do pacote "moreutils", cujo comando parallel, é diferente do GNU parallel.
Obrigado.