我想使用 GNU Parallel 在 P 核上运行 N 个命令。我将每个命令放在一个文件中:ListOfCommand.txt。该文件中的每一行对应一个不同的命令,并且每一行都是可以在命令行“按原样”运行的完整命令。命令数量比核心数量多得多。所以我希望 GNU Parallel 一次只运行 P 命令,然后每当一个命令完成运行时,文件中的下一个命令就应该开始(动态调度)。
这似乎应该可以通过 GNU Parallel 实现,但我很难消化手册页。有谁知道该怎么做吗?
[编辑]经过更多挖掘,这似乎有效:
并行 -P 4 '{}' < ListOfCommands
关于提供命令列表,您应该能够等效地使用以下任何命令:
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