热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在bash/linux中并行运行shell脚本

如何解决《在bash/linux中并行运行shell脚本》经验,为你挑选了1个好方法。

我有一个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 ...


推荐阅读
author-avatar
PHP小龙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有