параллельная обработка с помощью xargs

Наконец-то я нашел ответ. После долгих часов экспериментов. ха-ха

Вот оно:

find -mtime -$a -type f ! -name "*.bak*" | xargs zgrep -il "$b" | xargs zgrep -il "$c" | xargs zgrep -il "$d" | xargs zgrep -il 'ST.997' | sort -u
0
07.11.2019, 00:13
2 ответа

Вы хотите прочитать руководство xargs и найти -L и флаги -P .

tail -f logfile.log | grep 'patternline' |
xargs -P 4 -L 1 bash scriptname.sh

Это будет выполнять не более четырех экземпляров команды за раз ( -P 4 ) и с одной строкой ввода для каждого вызова ( -L 1 ).

Добавьте -t в xargs , чтобы увидеть, что будет выполнено.

2
28.01.2020, 02:27

GNU Parallel правильно цитирует аргумент за вас:

tail -f logfile.log | grep 'patternline' |
  parallel bash scriptname.sh

Вдобавок к этому по умолчанию будет использоваться 1 процесс на ядро ​​ЦП, и он будет следить за тем, чтобы выходные данные двух параллельных заданий не смешивались.

GNU Parallel - это общий распараллеливатель, который упрощает параллельное выполнение заданий на одной или нескольких машинах, к которым у вас есть доступ по ssh. Часто может заменить цикл на .

Если у вас есть 32 различных задания, которые вы хотите запустить на 4 процессорах, простой способ распараллеливания - запустить 8 заданий на каждом процессоре:

Simple scheduling

GNU Parallel вместо этого порождает новый процесс, когда один из них завершается, - оставляя процессоры активными. и тем самым экономя время:

GNU Parallel scheduling

Установка

Если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить персональную установку, для которой не требуется root-доступ. Это можно сделать за 10 секунд, выполнив следующие действия:

$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
   fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep 3374ec53bacb199b245af2dda86df6c9
12345678 3374ec53 bacb199b 245af2dd a86df6c9
$ md5sum install.sh | grep 029a9ac06e8b5bc6052eac57b2c3c9ca
029a9ac0 6e8b5bc6 052eac57 b2c3c9ca
$ sha512sum install.sh | grep f517006d9897747bed8a4694b1acba1b
40f53af6 9e20dae5 713ba06c f517006d 9897747b ed8a4694 b1acba1b 1464beb4
60055629 3f2356f3 3e9c4e3c 76e3f3af a9db4b32 bd33322b 975696fc e6b23cfb
$ bash install.sh

Другие варианты установки см. http://git.savannah.gnu.org/cgit/parallel.git/tree/README

Подробнее

См. Другие примеры: http://www.gnu.org/software/parallel/man.html

Посмотрите вступительные видеоролики: https://www.youtube.com/playlist?list= PL284C9FF2488BC6D1

Изучите руководство: http://www.gnu.org/software/parallel/parallel_tutorial.html

Подпишитесь на список адресов электронной почты, чтобы получить поддержку: https: // lists .gnu.org / mailman / listinfo / parallel

2
28.01.2020, 02:27

Теги

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