GNU parallel vs & (я имею в виду фон) vs xargs -P

Я смущен различием или преимуществом (если есть) запуска набора задач в сценарии .sh с использованием GNU parallel

Например, ответ Оле Танге :

 parallel ./pngout -s0 {} R{} ::: *.png 

вместо того, чтобы прокручивать их, помещая их в фоновом режиме.

Например, ответ frostschutz :

 #copied from the link for illustration for stuff in things do ( something with stuff ) & done wait # for all the something with stuff 

Короче говоря, они просто синтаксически или практически разные? И если практически разные, когда я должен использовать их?

One Solution collect form web for “GNU parallel vs & (я имею в виду фон) vs xargs -P”

Помещение нескольких заданий в фоновом режиме – хороший способ использования нескольких ядер одной машины. parallel однако, позволяет распространять задания на нескольких серверах вашей сети. От man parallel :

GNU parallel – это инструмент оболочки для параллельного выполнения заданий с использованием одного или нескольких компьютеров . Типичным входом является список файлов, список хостов , список пользователей, список URL-адресов или список таблиц.

Даже при работе на одном компьютере parallel дает вам гораздо больший контроль над распараллеливанием ваших заданий. Возьмите этот пример со страницы man :

  To convert *.wav to *.mp3 using LAME running one process per CPU core run: parallel lame {} -o {.}.mp3 ::: *.wav 

Хорошо, вы можете сделать то же самое с

  for i in *wav; do lame "$i" -o "${i%.wav}.mp3" & done 

Однако это длиннее и громоздко и, что более важно, запустит столько рабочих мест, сколько есть .wav файлов. Если вы запустите это на нескольких тысячах файлов, это, скорее всего, принесет нормальный ноутбук на колени. parallel с другой стороны, запустит одно задание на ядро ​​процессора и сохранит все красивое и аккуратное.

В принципе, parallel предлагает вам возможность точно настроить, как выполняются ваши задания, и сколько доступных ресурсов они должны использовать. Если вы действительно хотите увидеть силу этого инструмента, прочитайте его руководство или, по крайней мере, примеры, которые он предлагает.

Простой фон действительно нигде не близок к уровню сложности, который нужно сравнить с параллельным. Что касается того, насколько parallel отличается от xargs , толпа GNU дает xargs разбивку здесь . Некоторые из наиболее важных моментов:

  • xargs плохо ссылается на специальные символы (например, пробел, «и»).
  • xargs может запускать заданное количество заданий параллельно, но не поддерживает параллельную работу заданий параллельного ввода.
  • xargs не поддерживает группировку вывода, поэтому вывод может выполняться вместе, например, первая половина строки относится к одному процессу, а последняя половина строки относится к другому процессу.
  • xargs не поддерживает сохранение порядка вывода, поэтому при параллельном выполнении заданий с помощью xargs вывод второго задания не может быть отложен до завершения первого задания.
  • xargs не поддерживает запуск заданий на удаленных компьютерах.
  • xargs не поддерживает замену контекста, поэтому вам придется создавать аргументы.
  • Какова цель команды xargs -I?
  • Удалите все повторяющиеся слова из строки, используя сценарий оболочки
  • xargs: слишком длинная строка аргументов
  • Есть ли способ манипулировать порядком аргументов stdin при использовании xargs, так же, как awk как $ 0, $ 1, $ 2 и т. Д.?
  • Сделать xargs в качестве первого параметра
  • xargs: Имеет ли порядок вариантов?
  • Использовать вход xargs в команде eval
  • Доступ к каждой строке в .txt-файле, загрузка и переименование ссылок
  • xargs: запуск команды один раз со всеми аргументами
  • Список файлов с меткой времени с эпохи
  • 'git show' не передает управляющие символы для цвета
  • Interesting Posts

    dircolors: правила для _ext (а не .ext)

    Как переустановить Sudo, если это не в sources.list?

    Как расширить логический и расширенный раздел с помощью fdisk

    Местоположение Java из / usr / bin / java

    passwd -S дает альтернативную схему аутентификации при использовании. и пароль в / etc / shadow не зашифрован

    Какую из VPN или IPSec или xxx я могу использовать здесь?

    Что такое текстовая команда для именования окна в gnu-screen?

    Как я могу скомпилировать ядро ​​Linux с помощью GRSecurity и SELinux с помощью репозиториев git?

    Объедините 2 подсказки в один, показывая состояние ошибки в красном / оранжевом

    Медленная работа при копировании файлов на USB-устройства и обратно

    Может ли список каталогов быть отключен для sftp?

    Как копировать в две папки одновременно с помощью GNU параллельно, создавая несколько потоков?

    Деактивировать новую поддержку собственных жестов в GNOME 3.14

    Когда обнаружена уязвимость, влияющая на ядро ​​Linux, что мне делать с Docker?

    ssh открытый ключ auth: первый вход по-прежнему запрашивает пароль

    Linux и Unix - лучшая ОС в мире.