2013-05-08 7 views
51

Я пытался использовать GNU параллельно в течение некоторого времени, но я никогда не мог заставить его функционировать вообще!GNU parallel вообще не работает

Например, бег (в непустой каталог!):

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 

Это кажется, что он просто выполняет каждый аргумент в качестве команды, которая не имеет никакого смысла.

Я пробовал bash, zsh, tcsh, csh и sh, безрезультатно.

+0

"bash, zsh, tcsh, csh, s h "+1 для полноты;) –

ответ

84

Как я собирался закончить писать этот вопрос, я побежал parallel --version сообщить версию, только найти:

ВНИМАНИЕ: При использовании --tollef. ЕСЛИ ВЕЩИ ДЕЙСТВУЮТ ВЕРОЯТНОЕ ИСПОЛЬЗОВАНИЕ --gnu.

Непонятно, почему этот флаг установлен по умолчанию. Излишне говорить, что работало --gnu!

Думал, что я разместил это, чтобы сэкономить час разочарования и замешательства.

EDIT: Чтобы исправить это постоянно (в Ubuntu, по крайней мере), удалите --tollef флаг в /etc/parallel/config

+18

--tollef будет уволен 20140222 http://lists.gnu.org/archive/html/parallel/2013-02/msg00018.html Будет полезно, если вы уже сейчас позволите своему разочарованию должен быть известен вашему менеджеру распространения, чтобы по умолчанию можно было изменить. –

+0

@ Что вы подразумеваете под улучшением ситуации? Как при изменении поведения по умолчанию? – WaelJ

+0

@OleTange Это очень приятно услышать! :) – WaelJ

8

В зависимости от вашей операционной системы, вы должны проверить, являетесь ли Вы на самом деле работает версия 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 

Если это так, вы не используете версию GNU. Ubuntu 12.04 подобен этому, и вам нужно будет manually install GNU parallel, чтобы получить функциональность, которую вы ожидаете.

1

Были проблемы, параллельные как внешняя команда FREEMAT (MATLAB lookalike); argumentFile не подавали команду должным образом решить ее:

  • Добавление --gnu опционам
  • Не используя cmdString синтаксис с участием [ "]

Код:

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

Спасибо за это :) Im on Ubuntu 12.04.