我想使用以下功能GNU并行它可以执行命令和并行输入的列表,并在完成后将其吐出,但是,我不想在所有服务器上并行安装 GNU。
或者也许是并行版本xargs
?
是否有 GNU Parallel 功能的 ksh 实现?在这种情况下,不必像 GNU Parallel 那样按顺序完成——只要所有输出都可以通过管道传输或存储即可。我还想避免使用临时文件。
答案1
如果你想在多核机器上并行化,你可以使用 (GNU) xargs
,例如:
echo seq_[0-9][0-9].gz | xargs -n 1 -P 16 ./crunching
含义:xargs
并行启动最多 16 个进程,./crunching
每个进程使用来自 stdin 的 1 个令牌。
您还可以split
与 xargs 结合使用。
或者您可以创建一个简单的 Makefile 用于作业执行和调用make -f mymf -j $CORES
(此解决方案需要临时文件)。
附:GNU 并行手册还包括一些与其他工具的比较,包括参数和制作,有趣的是他们写道:
(GNU 并行的早期版本恰好是使用 make -j 实现的)。
答案2
查看parallel --embed
哪个将 GNU Parallel 嵌入到您使用它的同一个 shell 脚本中。
parallel --embed > new_script
然后编辑 new_script.