Это не будет работать, если Вы не будете в /path/to/log/file
, потому что ls
дает Вам только название файла и tail -f
не найдет его. Если Вы помещаете a *
в конце ls
это даст Вам полные пути:
ls -rt /var/log/apache2/* | tail -1 | xargs tail -f
Если у вас есть GNU Parallel, вы можете сделать это:
parallel --rrs --recend '\0' -N1 --pipe bash process-one-record-stdin.sh <record-contents
Все новые компьютеры имеют несколько ядер, но большинство программ являются последовательными в природе и поэтому не будут использовать несколько сердечников. Тем не менее, многие задачи чрезвычайно параллелируются:
GNU Parallel Общий параллеллизатор и облегчает запуск заданий параллельно на том же машине или на нескольких машинах, к которым у вас есть SSH.
Если у вас есть 32 разные задания, которые вы хотите запустить на 4 процессорах, прямой путь для параллелизма - это запустить 8 заданий на каждом ЦП:
GNU Parallel вместо этого порождает новый процесс, когда одна отделка - сохранение акции процессоров И, таким образом, экономить время:
Установка
Если 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
Могу ли я сделать это с помощью 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