GNU parallel не работает вообще



Я пытался использовать 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, но безрезультатно.

562   3  

3 ответов:

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

внимание: вы используете --tollef. Если вещи ведут себя странно, используйте -- gnu.

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

думал, что я опубликую это, чтобы сэкономить кому-то часы разочарования и путаницы.

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

в зависимости от вашей операционной системы, вы должны проверить, действительно ли вы используете версию 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 выглядит так, и вам нужно вручную установить GNU parallel чтобы получить функциональность, которую вы ожидаете.

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

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

код:

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

Спасибо за это :) Im на Ubuntu 12.04, а также.

Comments

    Ничего не найдено.