Ste*_*son 47 xargs shell-script background-process gnu-parallel
我对.sh
使用脚本在脚本中运行一组任务的区别或优势(如果有的话)感到困惑GNU parallel
例如Ole Tange的回答:
parallel ./pngout -s0 {} R{} ::: *.png
Run Code Online (Sandbox Code Playgroud)
而不是说通过它们循环将它们放在背景中&
。
例如froschutz的回答:
#copied from the link for illustration
for stuff in things
do
( something
with
stuff ) &
done
wait # for all the something with stuff
Run Code Online (Sandbox Code Playgroud)
简而言之,它们只是在语法上或实际上不同吗?如果实际上不同,我应该什么时候使用它们?
ter*_*don 56
将多个作业置于后台是使用单机多核的好方法。parallel
但是,允许您将作业分布在网络的多个服务器上。来自man parallel
:
GNU parallel 是一种 shell 工具,用于使用一台或多台计算机并行执行作业 。典型的输入是文件列表、主机列表、用户列表、URL 列表或表列表。
即使在单台计算机上运行,parallel
您也可以更好地控制作业的并行化方式。从man
页面中获取此示例:
To convert *.wav to *.mp3 using LAME running one process per CPU core
run:
parallel lame {} -o {.}.mp3 ::: *.wav
Run Code Online (Sandbox Code Playgroud)
好的,你也可以这样做
for i in *wav; do lame "$i" -o "${i%.wav}.mp3" & done
Run Code Online (Sandbox Code Playgroud)
但是,这会更长更麻烦,更重要的是,将启动与.wav
文件数量一样多的作业。如果你在几千个文件上运行它,它很可能会让一台普通的笔记本电脑屈服。parallel
另一方面,将为每个 CPU 内核启动一个作业并保持一切整洁。
基本上,parallel
您可以微调作业的运行方式以及它们应该使用多少可用资源。如果您真的想了解此工具的强大功能,请阅读它的手册,或者至少阅读它提供的示例。
与并行相比,简单的背景确实远不及复杂程度。至于有什么parallel
不同xargs
,GNU 人群在这里给出了一个很好的分类。一些更突出的点是:
归档时间: |
|
查看次数: |
19445 次 |
最近记录: |