gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:00:10 25 4
gpt4 key购买 nike

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

有哪些可用选项?

最佳答案

简单地使用 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 ...

关于linux - 在 bash/linux 中并行运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43642618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com