xargs, записи и стандартный вход

Это не будет работать, если Вы не будете в /path/to/log/file, потому что ls дает Вам только название файла и tail -f не найдет его. Если Вы помещаете a * в конце ls это даст Вам полные пути:

ls -rt /var/log/apache2/* | tail -1 | xargs tail -f
4
23.10.2014, 12:40
2 ответа

Если у вас есть GNU Parallel, вы можете сделать это:

parallel --rrs --recend '\0' -N1 --pipe bash process-one-record-stdin.sh <record-contents

Все новые компьютеры имеют несколько ядер, но большинство программ являются последовательными в природе и поэтому не будут использовать несколько сердечников. Тем не менее, многие задачи чрезвычайно параллелируются:

  • запустить одну и ту же программу по многим файлам
  • , выполняющую одну и ту же программу для каждой строки в файле
  • Запустите ту же программу для каждого блока в файле

GNU Parallel Общий параллеллизатор и облегчает запуск заданий параллельно на том же машине или на нескольких машинах, к которым у вас есть SSH.

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

Simple scheduling

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

GNU Parallel scheduling

Установка

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

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

для других вариантов установки см. http://git.savannah.gnu.org/cgit/parallel.git/tree/readme

Узнать больше

Увидеть больше примеров: http://www.gnu.org/software/parallel/man.html

Смотреть видео в Intro: https://www.youtube.com/playlist?list= PL284C9FF2488BC6D1

Прогулка по учебнику: http://www.gnu.org/software/parallel/parallel_tutorial.html

Зарегистрируйтесь на списке электронных напитков, чтобы получить поддержку: HTTPS: // списки .gnu.org / mailman / listinfo / parallel

1
27.01.2020, 21:01

Могу ли я сделать это с помощью xarg

с xargs, варианты использования:

- NULL -0 входных элементов заканчивается нулевым символом, а не пробелы,

-N MAX-ARGSS Используйте при большинстве аргументов Max-Args на командную строку.

$ echo -ne "line 111\0000line 222\0000\0000line 333\0000\0000" | \
     xargs -I '{}' --null -n 1 bash -c "echo handling this input: '{}'. OK"
handling this input: line 111. OK
handling this input: line 222. OK
handling this input: . OK
handling this input: line 333. OK
handling this input: . OK
0
27.01.2020, 21:01

Теги

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