示例shell脚本多线程执行多个脚本
时间: 2023-08-16 21:08:50 浏览: 308
你可以使用以下示例shell脚本来实现多线程执行多个脚本:
```bash
#!/bin/bash
# 定义要执行的脚本列表
scripts=(
"script1.sh"
"script2.sh"
"script3.sh"
# 添加更多的脚本
)
# 定义并发执行的最大线程数
max_threads=3
# 等待所有子进程完成的函数
wait_for_processes() {
local pids=("$@")
for pid in "${pids[@]}"; do
wait $pid
done
}
# 循环执行脚本,并限制并发线程数
for script in "${scripts[@]}"; do
# 检查当前并发线程数是否达到最大线程数,如果达到则等待
while [ $(jobs -p | wc -l) -ge $max_threads ]; do
wait_for_processes $(jobs -p)
done
# 执行脚本
sh "$script" &
done
# 等待所有子进程完成
wait_for_processes $(jobs -p)
```
在以上示例中,你可以定义要执行的脚本列表,将其存储在`scripts`数组中。然后,你可以设置`max_threads`变量来定义最大并发线程数。
脚本会循环遍历脚本列表,并检查当前并发线程数是否达到最大线程数。如果达到最大线程数,则会等待已有的子进程完成,然后继续执行下一个脚本。
使用`sh "$script" &`命令来在后台执行脚本。
最后,脚本会等待所有子进程完成。
你可以根据需要修改脚本列表和最大线程数来满足你的要求。
阅读全文