Параметр 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, безрезультатно.
Ответы
Ответ 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
. В моем Пути был только один параллельный исполняемый файл, но он все еще не обнаруживал.
Я смог это исправить, как показано ниже:
- Беги,
whereis parallel
. Это дает все пути, где присутствуют исполняемые файлы с именем параллельно. Для моего случая был только один путь /usr/local/bin/parallel
. Запуск по этому пути работает просто отлично. - Вы можете добавить псевдоним для этого в файле
~/.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.