为什么(GNU?)并行无提示地失败,我该如何解决?


15

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

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版本。


在我的系统上打印错误。什么parallel --version发言权? $ parallel bnzip2 -- * sh: bnzip2: command not found
Mikel 2012年

GNU parallel是“版权(C)2010、2011、2012 Ole Tange,ole.tange.dk和自由软件基金会公司”。(自开始以来同一作者。)

Answers:


20

您已经对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


1
这下全说通了!作为记录,在Ubuntu 12上,现在apt-get install parallel拉Tollef的并行而不是您的GNU版本。感谢您填写我进去
带钩

1
对于Ubuntu 12,请参阅从哪里获得GNU Parallel的软件包?
2013年

12

(我会发表评论,但我没有特权。)

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

我添加alias parallel='parallel --gnu'了我的登录脚本,所以我不必再大惊小怪了。


2
您也可以添加--gnu到$ HOME / .parallel / config。
雷神

注意:此处的答案是针对@Hooked的评论。
2013年

请参阅此处以了解另一种方法以及有关版本的更多详细信息:askubuntu.com/a/298598/11522
2013年

1
Fedora还令人沮丧地将--tollef放在/ etc / parallel / config中。好像这还不够令人讨厌,GNU parallel本身报告说--tollef将在20140222上删除
musicinmybrain
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.