Доходящий до X команд параллельно

Необходимо смочь сделать это использование --new-file переключатель. Взятый из различной страницы справочника:

 --new-file
          In directory comparison, if a file is found in only  one  direc-
          tory, treat it as present but empty in the other directory.

Попробуйте это:

diff -crB --new-file pp0 pp1 > pp0.patch

4
25.09.2017, 03:23
3 ответа

При установке инструмента GNU Parallel, можно сделать довольно легкую работу того, что Вы пытаетесь выполнить:

$ find . -maxdepth 1 -type f -note -iname "*.gpg" | sort | \
      parallel --gnu -j 8 --workdir $PWD '                 \
         echo "Encrypting {}...";                          \
         gpg --trust-model always                          \
           --recipient "me@myself.com" --output "{}.gpg"   \
           --encrypt "{}" && rm "{}"                       \
      '

подробнее

Вышеупомянутое берет вывод find и выполнение его до parallel, и выполнение 8 за один раз. Везде существует возникновение {} имена файлов, от которых проходят find заменит {} в тех местах.

Ссылки

5
27.01.2020, 20:49
  • 1
    Что с зависающим апострофом в конце? Это пропускает стартовый апостроф? –  Naftuli Kay 24.06.2013, 20:43
  • 2
    @TKKocheran - который работал на Вас? –  slm♦ 24.06.2013, 20:55
  • 3
    Это - то, что я выполняю, и это - вывод, который я вижу. Еще не работая :-| –  Naftuli Kay 24.06.2013, 21:08
  • 4
    Что, если Вы перемещаетесь sudo за пределами find? Сделайте это a sudo -i find ... Я не думаю, что можно передать по каналу к sudo тем способом. Вы могли сделать это: echo "cmd1" | sudo bash. –  slm♦ 24.06.2013, 21:20
  • 5
    Похож я получил pwnt с этой проблемой. –  Naftuli Kay 24.06.2013, 21:32

Вы могли бы хотеть посмотреть на параллель гну и --semaphore опция. Из документации:

- семафор

Работа как семафор подсчета. - семафор заставит GNU, параллельный запускать команду в фоновом режиме. Когда количество одновременных заданий будет достигнуто, параллель GNU будет ожидать одного из них для завершения прежде, чем запустить другую команду.

Вы используете --jobs 8 ограничить количество заданий к 8. Можно передать вывод по каналу вида в parallel как Вы сделал бы с xargs. sem псевдоним для parallel --semaphore

4
27.01.2020, 20:49

Я написал простой -–-сценарий Perl, который позволяет контролировать максимальное количество одновременно выполняемых команд:https://github.com/matmu/parallelize_cmds

Может вас заинтересовать.

0
27.01.2020, 20:49

Теги

Похожие вопросы