2013-05-08 10 views
51

Ho provato a utilizzare GNU parallelamente per qualche tempo, ma non sono mai riuscito a farlo funzionare affatto!parallelo GNU non funziona affatto

Ad esempio, eseguire (in una directory non vuota!):

ls | parallel echo   # Outputs single new line 
ls | parallel echo echo echo # Outputs three new lines. 
ls | parallel echo {}   # /bin/bash: {}: command not found 
ls | parallel echo '{}'  # /bin/bash: {}: command not found 
ls | parallel 'echo {}'  # Outputs: {} 
ls | parallel -IMM 'echo MM' # Outputs: MM 

Sembra che vengono semplicemente eseguendo ogni argomento come un comando, che non ha senso.

Ho provato bash, zsh, tcsh, csh e sh, inutilmente.

+0

"bash, zsh, tcsh, csh e s h "+1 per completezza;) –

risposta

84

Mentre stavo per completare la scrittura a questa domanda, mi sono imbattuto parallel --version segnalare la versione, solo per scoprire:

ATTENZIONE: Si utilizza --tollef. SE LE COSE STANNO EFFETTUANDO USO INDESIDERATO --gnu.

Non mi è chiaro perché il flag sia impostato per impostazione predefinita. Inutile dire che l'utilizzo di --gnu ha funzionato!

Pensavo che avrei postato questo per salvare ore di frustrazione e confusione.

EDIT: Per correggere questo in modo permanente (in Ubuntu almeno), eliminare il flag --tollef in /etc/parallel/config

+18

--tollef verrà ritirato 20140222 http://lists.gnu.org/archive/html/parallel/2013-02/msg00018.html Sarà utile se già ora lasci la tua frustrazione essere noto al manutentore della distribuzione, in modo che l'impostazione predefinita possa essere modificata. –

+0

@Thor cosa intendi con 'migliorare la situazione'? Come nel cambiare il comportamento predefinito? – WaelJ

+0

@OleTange È molto bello da sentire! :) – WaelJ

8

A seconda del sistema operativo, si dovrebbe verificare se si sta effettivamente in esecuzione la versione GNU.

$ parallel --version 
parallel: invalid option -- '-' 
parallel [OPTIONS] command -- arguments 
    for each argument, run command with argument, in parallel 
parallel [OPTIONS] -- commands 
    run specified commands in parallel 

Se questo è il caso, non stai facendo girare la versione GNU. Ubuntu 12.04 è come questo, e avrai bisogno di manually install GNU parallel per ottenere la funzionalità che ti aspetti.

1

Problemi risolti in parallelo come comando esterno da FREEMAT (aspetto simile a MATLAB); l'argumentFile non è stato inserito al comando correttamente risolto da:

  • Aggiunta --gnu alle opzioni
  • Non utilizzando la sintassi cmdstring coinvolge [ "]

Codice:

cmdString = 'parallel --gnu command ::: '; 
    while j<=jLength 
     cmdString = [cmdString argumentFilePath(j,:) ' ']; 
     j=j+1; 
    end 
    system(cmdString) 

Grazie per quello :) Im su Ubuntu 12.04 pure