Coloque os trabalhos do mysql em segundo plano:
#!/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!!"
O wait
faz com que o script aguarde até que todas as tarefas em segundo plano ter concluído.
Esta é uma maneira muito simples de fazer isso, você pode querer adicionar lógica para colocar, por exemplo, no máximo 4 postos de trabalho no fundo de uma só vez.
Uma alternativa é usar parallel
que funciona um pouco como xargs
, mas foi projetado para executar trabalhos em paralelo.