Параметр 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
Похоже, что он просто выполняет каждый аргумент как команду, что не имеет смысла.
- Рекурсивные перемещения файлов определенного типа на определенный путь
- Запуск программ параллельно с помощью xargs
- Создание символических ссылок рекурсивно для целого дерева
- Вызов нескольких команд через xargs
- Вызов функций оболочки с помощью xargs
Я пробовал bash, zsh, tcsh, csh, и sh, безрезультатно.
Поскольку я собирался закончить этот вопрос, я выполнил 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 параллельно, чтобы получить ожидаемую функциональность.
Если проблемы выполнялись параллельно как внешняя команда 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.