【发布时间】:2017-11-29 01:21:36
【问题描述】:
我有一个主脚本,它从一个文件中读取 5 行,一次执行 5 个不同的 shell 脚本,并等待 5 个完成,然后再开始下一批:
cat file |
while read line1 && read line2 && read line3 && read line4 && read line5
sh script1.sh &
sh script2.sh &
sh script3.sh &
sh script4.sh &
sh script5.sh &
wait
有没有办法确保即使脚本 {1,3} 完成,一次也始终运行 5 个脚本。即如果 1-5 同时运行并且 1,2 完成。立即开始 6,7。
【问题讨论】:
-
看看 GNU Parallel 的选项
--jobs。 -
...或 GNU 扩展
xargs -P,如果你更喜欢 C 而不是 Perl。 -
@manawa:你在哪里使用变量 line1 到 line5?
-
line{1..5} 被分配为后续架构键的值。即 schema1 = line1 等等....然后我获取这些变量并构建 SQL 输出,稍后我会为每个不同的表执行这些输出。