use*_*325 1 linux parallel-processing background-process batch-processing
我有一个特定软件的七个许可证。因此,我想同时开始 7 个工作。我可以使用“&”来做到这一点。现在,'wait' 命令会等到所有这 7 个进程结束以生成下一个 7 个进程。现在,我想编写 shell 脚本,在我开始前七个进程之后,以及当工作完成时我想开始另一个。这是因为这 7 种工作中的一些可能需要很长时间,而另一些则很快就会完成。我不想浪费时间等待他们全部完成。有没有办法在linux中做到这一点?请你帮助我好吗?
谢谢。
GNUparallel是必经之路。它旨在启动同一命令的多个实例,每个实例都具有从stdin外部文件或外部文件中检索到的不同参数。
假设您的许可脚本被调用myScript,每个实例都具有相同的选项,--arg1 --arg2并--argVariable为每个产生的实例采用可变参数,这些参数存储在文件中myParameters:
cat myParameters | parallel -halt 1 --jobs 7 ./myScript --arg1 --argVariable {} --arg2
Run Code Online (Sandbox Code Playgroud)
说明:
-halt 1parallel如果有一个失败,告诉停止所有的工作--jobs 7 将启动 7 个实例 myScript在基于 debian 的 linux 系统上,您可以parallel使用以下命令进行安装:
sudo apt-get install parallel
Run Code Online (Sandbox Code Playgroud)
作为奖励,如果您的许可证允许,您甚至可以告诉parallel在多台计算机之间启动这 7 个实例。