1

Я попытался решить эту проблему, у меня есть небольшой скрипт для подключения к списку хостов, хранящихся в файле.

#!/bin/bash
num=$(wc -l < ip.txt)
while read ip; do
    mysql --login-path=login -h $ip "database" < "query.sql"
    echo "Script 1 - Remaining: "$num $ip
    num=$((num-1))
done < ip.txt
echo "Script 1 Finished!!"

Я хочу выполнить несколько запросов MySQL одновременно, например, 10 или 20, чтобы я мог закончить тест быстрее, я попытался создать еще один сценарий оболочки, который запускает 4 сценария одновременно, но я действительно не знаю, как с этим справиться.

1 ответ1

3

Поместите задания mysql в фоновый режим:

#!/bin/bash
num=$(wc -l < ip.txt)
while read ip; do
    mysql --login-path=login -h $ip "database" < "query.sql" &
    num=$((num-1))
done < ip.txt
wait
echo "Script 1 Finished!!"

wait заставляет скрипт ждать, пока все фоновые задания не будут завершены.

Это довольно простой способ сделать это, вы можете добавить логику, чтобы поместить, например, максимум 4 задания в фоновом режиме.

Альтернативой является использование parallel интерфейса, который работает немного как xargs но предназначен для параллельного выполнения заданий.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .