Intereting Posts
Как привязать определенные файлы при использовании сортировки? start_daemon не работает с кодом выхода 7 Что означает эта странная цель Makefile «.PHONY»? Не удалось синхронизировать клиент NTP v4 с сервером Windows AD уменьшение «количества зарезервированных блоков» не отображается в выводе df Дисковод USB не обнаружен / arch Какова релевантность «en_AU» в «LC_CTYPE»? и что такое `locale LC_CTYPE` вывод? Разрешения чтения / записи для демона, выполняемого как не root Показывать команду, выполненную вместе с выходом в файле журнала как записать живое изображение аварийного диска (ISO) с dd для загрузки UEFI? Почему загрузка высока, несмотря на то, что ни процессор, ни диск не используются Разметка. Руководство Arch против Ubuntu rsync: samba vs ftp для резервного копирования Чтобы вычислить среднее значение, взяв аргумент командной строки Как извлечь данные из файла JSON

чтение параллельной обработки из файла в цикле

Скрипт PCAP.

У меня есть сервер с 32 процессорами, и вам нужно максимизировать этот скрипт для использования этих процессоров. В настоящее время программа tshark использует только 1 процессор, поэтому мне нужно одновременно запускать несколько экземпляров tshark . В настоящее время цикл, определенный в приведенном ниже скрипте, делает 1 pcap за время, которое очень медленно. Мне нужно запустить до 15 tshark s за один раз, но не более того, пока цикл не дойдет до конца файла.

По сути сценарий читает определенные файлы pcap и перечисляет pcaps в текстовом файле, а затем использует tshark для фильтрации, а затем объединяется с использованием mergecap .

В этом примере есть 5 файлов pcap для фильтрации.

  1. full_cap_1589
  2. full_cap_1590
  3. full_cap_1591
  4. full_cap_1592
  5. full_cap_1593

 #! / Bin / Баш
 # Test Script для анализа файлов pcap
 # DATE = `date | awk '{print $ 2}'`
 set -x


 эхо "Время начала - месяц / день Пример времени: 07/19 08:00"

 read -e date1

 эхо "Время окончания - месяц / день Пример времени 07/19 08:35"

 read -e date2

 echo "Какой IP-адрес для фильтрации?"

 читать -e ip

 echo $ ip

 FIND = `find / mnt / pcap / capture / -type f -newermt" $ date1 "!  -newermt "$ date2" |  cut -c20-40> / home / имя пользователя / load_dock / load.txt`

 #for full_caps в "$ {FIND [@]}"

 для i в `cat / home / username / load_dock / load.txt`

 делать

   tshark -r / mnt / pcap / captures / $ i "-Y ip.addr == $ ip" -w /home/username/loading_dock/$i.pcap


 сделанный

 mergecap -w /home/username/loading_dock/*.pcap -w /home/username/test1.pcap

 rm -rf /home/username/loading_dock/*.pcap
 rm -f /home/username/loading_dock/load.txt

 выход 0

Можете ли вы использовать GNU Parallel:

 parallel -j15 tshark -r /mnt/pcap/captures/{} \'"-Y ip.addr == $ip"\' -w /home/username/loading_dock/{}.pcap :::: /home/username/loading_dock/load.txt 

GNU Parallel – это общий параллелизатор, который позволяет легко запускать задания параллельно на одном компьютере или на нескольких компьютерах, к которым у вас есть доступ ssh.

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

Простое планирование

GNU Parallel вместо этого запускает новый процесс, когда заканчивается – сохранение активных процессоров и, следовательно, экономия времени:

GNU Параллельное планирование

Монтаж

По соображениям безопасности вы должны установить GNU Parallel с вашим диспетчером пакетов, но если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить личную установку, которая не требует доступа root. Это можно сделать за 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://lists.gnu.org/mailman/listinfo/parallel