为什么(GNU?)并行会默默失败,如何修复它?

为什么(GNU?)并行会默默失败,如何修复它?

在用于后处理一些模拟数据的较大脚本中,我有以下行:

parallel bnzip2 -- *.bz2

如果我理解parallel正确(我可能不理解),应该在具有列出的扩展名的所有文件上运行程序的 n 核线程。您可能会注意到我拼错了命令bunzip2。我希望这里出现警告或错误消息,但它会默默地失败。这是故意的吗?我以后怎样才能不被这个困扰呢?

更新:

我的安装可能parallel与我想象的不同:

> parallel --version`


parallel: invalid option -- '-'
parallel [OPTIONS] command -- arguments
    for each argument, run command with argument, in parallel
parallel [OPTIONS] -- commands
    run specified commands in parallel

parallel我的系统上的手册页给出了:

 parallel(1)                                                        parallel(1)
NAME
       parallel - run programs in parallel
....
AUTHOR
   Tollef Fog Heen

这似乎是不是GNU 版本。

答案1

您对来自 moreutils 的 Tollef 的相似之处感到困惑。看https://www.gnu.org/software/parallel/history.html

您可以简单地通过以下方式安装 GNU Parallel:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

观看 GNU Parallel 的介绍视频以了解更多信息: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

答案2

(我会对此发表评论,但我缺乏特权。)

您也可以只使用parallel --gnu.你说Ubuntu 12(.04?)使用Tollef的版本,但实际上它是gnu实现,只是出于某种原因默认使用Tollef的语法。

我添加alias parallel='parallel --gnu'到我的登录脚本中,这样我就不必再为它大惊小怪了。

相关内容