Supondo que você queira executar dez vezes, esta sintaxe funcionará:
parallel -n0 foo.sh ::: {1..10}
parallel
precisa de uma sequência de entrada de algum comprimento ( ::: {1..10}
) E você precisa ignorar o conteúdo da sequência de entrada ( -n0
), você só se importa com seu comprimento.
Seu comando original:, parallel foo.sh
não contém sequência de entrada para indicar quanto paralelismo você deseja. O aviso enigmático indica que você parallel
começará a ouvir o terminal em busca de uma sequência de entrada e que provavelmente não é isso que você deseja.
Aqui está o exemplo do tutorial:
seq 10 | parallel -n0 my_command my_args
Como funciona:
parallel
sempre pega uma sequência de entrada de algum lugar. Pode ser uma sequência delimitada por espaço em linha precedida por :::
OU uma sequência delimitada por nova linha de um arquivo ou origem semelhante a um arquivo, como um pipe. Neste exemplo, a sequência de entrada é de um tubo.
seq 10
produz uma sequência de dígitos delimitada por nova linha de um a dez.
- A
-n0
opção informa ao paralelo para ignorar os valores na sequência de entrada. Tudo o que nos importa é o tamanho da sequência, não o seu conteúdo. Mesmo que os dígitos não sejam usados, o comando ainda será executado dez vezes.
Outro exemplo:
parallel -n0 echo -n 'x' ::: {1..5}
Como funciona:
- A sequência de entrada está embutida.
{1..5}
produz uma sequência de dígitos delimitada por espaço de um a cinco.
-n0
ignora os valores da sequência (e repetimos a string 'x'
sempre.)
- Resultado:
xxxxx
Comparado a:
parallel echo -n ::: {1..5}
Como funciona:
- A sequência de entrada está embutida.
{1..5}
produz uma sequência de dígitos delimitada por espaço de um a cinco.
- Cada valor da sequência de entrada é usado como argumento para
echo
. Pedido não garantido.
- Saída:
43215
. Pode ser qualquer ordem.