作者:PHP小龙 | 来源:互联网 | 2023-02-05 15:21
我有一个shell脚本job.sh
.
内容如下:
#!/bin/bash
table=$1
sqoop job --exec ${table}
现在当我做./job.sh table1
该脚本成功执行.
我在一个文件中有表名tables.txt
.
现在我想循环遍历tables.txt
文件并job.sh
并行执行脚本10次.
我怎样才能做到这一点?
理想情况下,当我执行脚本时,我希望它在下面执行;
./job.sh table1
./job.sh table2
./job.sh table3
./job.sh table4
./job.sh table5
./job.sh table6
./job.sh table7
./job.sh table8
./job.sh table9
./job.sh table10
有哪些选择?
1> Mark Setchel..:
只需使用GNU Parallel
parallel -a tables.txt --dry-run sqoop job --exec {}
样本输出
sqoop job --exec table7
sqoop job --exec table8
sqoop job --exec table9
sqoop job --exec table6
sqoop job --exec table5
sqoop job --exec table4
sqoop job --exec table3
sqoop job --exec table2
sqoop job --exec table1
sqoop job --exec table10
如果看起来正确,只需删除--dry-run
并再次运行即可.
如果您希望一次运行4个作业,请使用:
parallel -j 4 ....
如果您希望每个CPU核心有一个作业,那么这是默认设置,因此您无需执行任何操作.
如果您希望按顺序保留作业,请添加-k
选项:
parallel -k ...