如何使用 GNU Parallel 运行文件中的命令列表?

问题描述 投票:0回答:1

我想使用 GNU Parallel 在 P 核上运行 N 个命令。我将每个命令放在一个文件中:ListOfCommand.txt。该文件中的每一行对应一个不同的命令,并且每一行都是可以在命令行“按原样”运行的完整命令。命令数量比核心数量多得多。所以我希望 GNU Parallel 一次只运行 P 命令,然后每当一个命令完成运行时,文件中的下一个命令就应该开始(动态调度)。

这似乎应该可以通过 GNU Parallel 实现,但我很难消化手册页。有谁知道该怎么做吗?

[编辑]经过更多挖掘,这似乎有效:

并行 -P 4 '{}' < ListOfCommands

gnu-parallel
1个回答
0
投票

关于提供命令列表,您应该能够等效地使用以下任何命令:

parallel -j4 < ListOfCommands
parallel -j4 -a ListOfCommands
parallel -j4 :::: ListOfCommands

对于列表中每个命令运行的内容,您可以使用

{}
来标识参数,但如果您未指定要运行的命令,则文件中的行将被视为命令:

所以,如果你像这样制作

ListOfCommands

echo A
echo B
echo C

您可以运行以下命令,为每个作业运行的命令是命令中的

echo X
行:

parallel -j4 :::: ListOfCommands
A
B
C

如果您只想将要运行的命令的参数放在文件中,则可以这样写

ListOfParameters

A
B
C 

然后将

echo
命令放在 GNU Parallel 命令行本身上,如下所示并使用
{}
:

parallel -j4 echo {} :::: ListOfParameters
A
B
C
© www.soinside.com 2019 - 2024. All rights reserved.