Подтвердить что ты не робот

Параметр GNU не работает вообще

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

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

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, безрезультатно.

4b9b3361

Ответ 1

Поскольку я собирался завершить этот вопрос, я запустил parallel --version, чтобы сообщить о версии, только чтобы найти:

ПРЕДУПРЕЖДЕНИЕ: ВЫ ИСПОЛЬЗУЕТЕ --tollef. ЕСЛИ ВЕЩИ ДЕЙСТВУЮТ ВЕРОЯТНОЕ ИСПОЛЬЗОВАНИЕ --gnu.

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

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

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

Ответ 2

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

Ответ 3

Если проблемы выполняются параллельно как внешняя команда из FREEMAT (MATLAB lookalike); аргументFile не был подан в команду, правильно разрешенную им:

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

код:

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

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

Ответ 4

Для меня это была та же проблема, но другая проблема. Просто выполнение parallel команды завершалось молча. parallel --version говорил об ошибке parallel --version invalid option. В моем Пути был только один параллельный исполняемый файл, но он все еще не обнаруживал.

Я смог это исправить, как показано ниже:

  1. Беги, whereis parallel. Это дает все пути, где присутствуют исполняемые файлы с именем параллельно. Для моего случая был только один путь /usr/local/bin/parallel. Запуск по этому пути работает просто отлично.
  2. Вы можете добавить псевдоним для этого в файле ~/.bashrc или ~/.zshrc например, alias parallel='/usr/local/bin/parallel'

И теперь parallel работает как шарм.

dev-dsk % parallel --version         
GNU parallel 20190322
Copyright (C) 2007-2019 Ole Tange and Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
GNU parallel comes with no warranty.