Supondo que você deseja executar dez vezes, essa 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 o tamanho dela.
Seu comando original: parallel foo.sh , não contém seqüência de entrada para indicar quanto paralelismo você deseja. O aviso enigmático está dizendo a você que parallel vai começar a escutar o terminal em busca de uma sequência de entrada, e que isso provavelmente não é o que você deseja.
Aqui está o exemplo do tutorial:
seq 10 | parallel -n0 my_command my_args
Como funciona:
-
parallelsempre recebe uma sequência de entrada de algum lugar. Ele pode ser uma seqüência delimitada por espaço in-line precedida por:::OR uma sequência delimitada por nova linha de um arquivo ou origem de arquivo, como um canal. Neste exemplo, a sequência de entrada é de um pipe. -
seq 10produz uma sequência de dígitos delimitada por nova linha de um a dez. - A opção
-n0informa a paralela para ignorar os valores na sequência de entrada. Tudo o que nos interessa é o comprimento 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 é inline.
-
{1..5}produz uma sequência de dígitos delimitada por espaço de um a cinco. -
-n0ignora os valores da sequência (e, em vez disso, exibimos a string'x'a cada vez). - Saída:
xxxxx
Compare com:
parallel echo -n ::: {1..5}
Como funciona:
- A sequência de entrada é inline.
-
{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 um argumento para
echo. Encomenda não garantida. - Saída:
43215. Poderia ser qualquer ordem.