stringtranslate.com

GNU-параллель

GNU parallel — это утилита командной строки для Linux и других Unix-подобных операционных систем, которая позволяет пользователю выполнять скрипты оболочки или команды параллельно . GNU parallel — это свободное программное обеспечение , написанное Оле Танге на языке Perl . Оно доступно на условиях GPLv3 . [2]

Использование

Вводное видео, часть 1
Вводное видео, часть 2

Наиболее распространенное применение — замена оболочки петли, например

пока читаем x ; делаем do_something " $x " сделано < список        

к форме

 список кошек | параллель do_something   

где файл listсодержит аргументы для do_somethingи где process_outputможет быть пустым.

Скрипты, использующие parallel, часто легче читать, чем скрипты, использующие pexec .

Программа также имеет параллельные функции

По умолчанию параллельно выполняется столько заданий, сколько имеется ядер ЦП .

Примеры

find  .  -name "*.foo" | параллельная строка grep     

Вышеприведенное является параллельным эквивалентом:

найти  .  -имя "*.foo" -exec grep bar {} +      

Это ищет все файлы в текущем каталоге и его подкаталогах, имена которых заканчиваются на .fooдля вхождений строки . bar Параллельная команда будет работать как и ожидалось, если имя файла не содержит символ новой строки . Чтобы обойти это ограничение, можно использовать:

найти  .  -name "*.foo" -print0 | parallel -0 grep bar       

Приведенная выше команда использует нулевой символ для разделения имен файлов.

найти  .  -name "*.foo" | parallel -X mv {} /tmp/trash       

Приведенная выше команда расширяется {}с таким количеством аргументов, которое позволяет длина командной строки, распределяя их равномерно между параллельными заданиями, если это необходимо. Это может снизить накладные расходы процесса для краткосрочных команд, которые требуют меньше времени для завершения, чем для запуска.

найти  .  -maxdepth 1 -type f -name "*.ogg" | parallel -X -r cp -v -p {} /home/media              

Команда выше делает то же самое:

cp  -v  -p  *.ogg  /home/media

Однако предыдущая команда, использующая find/ parallel/, cpболее эффективно использует ресурсы и не остановится с ошибкой, если расширение *.ogg слишком велико для оболочки.

Смотрите также

Ссылки

  1. ^ Танге, Оле (21 октября 2024 г.). «GNU Parallel 20241022 ('Sinwar Nasrallah') выпущен [стабильный]». parallel (список рассылки).
  2. ^ "GNU Parallel". GNU.org .

Внешние ссылки