
我试图解决这个问题,我有一个小脚本来连接到存储在文件中的主机列表。
#!/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 个脚本的 shell 脚本,但我真的不知道如何处理它。
答案1
将 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!!"
(shell 内置命令wait
)使脚本等待,直到所有后台作业都完成。
这是一种非常简单的方法,您可能需要添加逻辑,例如同时将最多 4 个作业放在后台。
另一种方法是使用parallel
其工作原理有点类似xargs
,但设计用于并行运行作业。