У меня есть сценарий ожидания, который я использую для сбора интерфейсов на коммутаторах cisco. И у меня есть скрипт bash, который создает цикл. Входной файл был разделен на 8 частей (sw_aa - sw_ah с 6 строками каждый).Параллелизировать процессы для получения скорости
sw_aa
169.254.253.2,169.254.253.1,169.254.253.1,sw_aa
...
sw_ab
169.254.254.2,169.254.254.1,169.254.254.1,sw_ab
...
etc...
loop.sh
#!/bin/bash
SW=($(cut -d "," -f 1 sw_??))
RT=($(cut -d "," -f 2 sw_??))
Pre=($(cut -d "," -f 3 sw_??))
lote=($(cut -d "," -f 4 sw_??))
for((i=0;i<${#SW[@]};i++)); do
./ciscoswitches.sh "${SW[$i]} ${RT[$i]} ${Pre[$i]} ${lote[$i]}" >> ${SW[$i]}.log
done
Мне нужно распараллелить процессы, чтобы получить скорость, так что я могу атаковать первую строку каждого входного файла, а затем выполните петлю недо конца. Как я могу это сделать?
Спасибо.
Использование GNU Parallel. Префикс второй к последней строке с помощью 'echo', то есть' echo ./ciscoswitches.sh ...' и добавьте '| параллельно "до последней строки. –
@MarkSetchell, отличный ответ! Простой и удобный для чтения. Я сделал несколько тестов, и я получил результаты всего за 2 минуты! Большое спасибо! –
Рад, что это работает для вас. Поздно, поэтому я напишу это как ответ завтра. –