我在 Ubuntu 10.04 上尝试使用并行命令时遇到问题。我查阅了并行文档,发现很少有命令可以运行。在所有情况下,我只是返回命令提示符,而不采取任何操作。例如我试图使用 bzip2 压缩一堆文件
17:32 farhat HarshaNaveen$ parallel bzip2 ::: *fastq
17:33 farhat HarshaNaveen$ ls *fastq|parallel bzip2 {}
这些命令都不起作用。也没有任何错误。 man 文件中给出的示例效果很好。
18:58farhat HarshaNaveen$ parallel sh -c "echo hi; sleep 2; echo bye" -- 1 2 3
hi
hi
hi
bye
bye
bye
18:58farhat HarshaNaveen$
我究竟做错了什么?
答案1
您的第一次尝试最接近正确,但为什么:::
?如果您更改:::
为--
,它将执行您想要的操作。
parallel
其命令行有一个特定的、不寻常的结构。在前半部分中,您向它提供要多次运行的命令,以及每次都相同的命令行部分。在后半部分,您为它提供每次运行命令时都会不同的部分。 这些半部由 分隔开--
。 一些实验表明,如果parallel
找不到后半部分,它实际上不会运行任何命令。
可能值得仔细重新阅读手册页。手册页具有简洁、信息密集的风格,可能需要一些时间来适应。还可以尝试阅读一些页面以了解您已经熟悉的命令。
答案2
默认情况下,在 ubuntu 中,其parallel
行为与 Tollef 的实现相同(为什么?)。你可以检查一下/etc/parallel/config
。在命令行上,您可以覆盖此设置并将其切换到 GNU 模式--gnu
。使用此开关,手册页中的所有示例都应该可以正常工作。
答案3
我假设您正在尝试同时运行bzip2 ::: *fastq
两者ls *fastq|parallel bzip2 {}
。您有什么令人信服的理由不打开两个终端窗口并在各自的窗口中运行它们?