gpt4 book ai didi

并行的linux批处理作业

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:15 37 4
gpt4 key购买 nike

我有七个特定软件的许可证。因此,我想同时开始 7 个工作。我可以使用“&”来做到这一点。现在,“等待”命令等到所有这 7 个进程结束以产生下一个 7。现在,我想编写 shell 脚本,在我开始前七个之后,当一个工作完成时我想开始另一个。这是因为这 7 个工作中的一些可能需要很长时间,而另一些则很快就完成了。我不想浪费时间等待他们全部完成。有没有办法在 Linux 中做到这一点?你能帮帮我吗?

谢谢。

最佳答案

GNU parallel是要走的路。它设计用于启动同一命令的多个实例,每个实例都具有从 stdin 或外部文件检索的不同参数。

假设您的许可脚本名为 myScript,每个实例都具有相同的选项 --arg1 --arg2 并采用可变参数 --argVariable 对于每个生成的实例,这些参数存储在文件 myParameters 中:

cat myParameters | parallel -halt 1 --jobs 7 ./myScript --arg1 --argVariable {} --arg2

解释:

  • -halt 1 告诉 parallel 在一个作业失败时停止所有作业
  • --jobs 7 将启动 7 个 myScript
  • 实例

在基于 debian 的 linux 系统上,您可以安装 parallel 使用:

sudo apt-get install parallel

作为奖励,如果您的许可证允许,您甚至可以告诉 parallel 在多台计算机中启动这 7 个实例。

关于并行的linux批处理作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13536231/

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