55

一段时间以来,我一直在尝试使用 GNU 并行,但我根本无法让它发挥作用!

例如,运行(在非空目录中!):

ls | parallel echo            # Outputs single new line
ls | parallel echo echo echo  # Outputs three new lines.
ls | parallel echo {}         # /bin/bash: {}: command not found
ls | parallel echo '{}'       # /bin/bash: {}: command not found
ls | parallel 'echo {}'       # Outputs: {}
ls | parallel -IMM 'echo MM'  # Outputs: MM

似乎它只是将每个参数作为命令执行,这没有任何意义。

我尝试过 bash、zsh、tcsh、csh 和 sh,但无济于事。

4

4 回答 4

90

正要写完这个问题,我跑去parallel --version报版本,结果发现:

警告:您正在使用--tollef。如果事情很奇怪,请使用--gnu。

我不清楚为什么默认设置该标志。不用说,使用--gnu工作!

以为我会发布此消息以节省数小时的挫败感和困惑。

编辑: 要永久修复此问题(至少在 Ubuntu 中),请--tollef删除/etc/parallel/config

于 2013-05-08T19:39:43.403 回答
14

根据您的操作系统,您应该检查您是否实际运行的是 GNU 版本。

$ 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

如果是这种情况,则说明您运行的不是 GNU 版本。Ubuntu 12.04 就是这样,你需要手动安装 GNU 并行才能获得你期望的功能。

于 2013-10-21T19:48:16.983 回答
1

作为来自 FREEMAT 的外部命令并行运行时出现问题(类似于 MATLAB);argumentFile 未提供给命令,通过以下方式正确解决了它:

  • 将 --gnu 添加到选项
  • 不使用涉及 ["] 的 cmdString 语法

代码:

cmdString = 'parallel --gnu command ::: ';
    while j<=jLength
        cmdString = [cmdString argumentFilePath(j,:) ' '];
        j=j+1;
    end
    system(cmdString)

谢谢你:) 我也在 Ubuntu 12.04 上。

于 2014-03-17T07:26:53.623 回答
0

对我来说,这是同样的问题,但不同的问题。只是运行parallel命令正在静默退出。也parallel --version说错了invalid option。在我的路径中只有一个并行的可执行二进制文件,但它仍然没有检测到。

我能够修复它如下

  1. 运行whereis parallel这给出了存在名为并行的可执行文件的所有路径。就我而言,只有一条路径/usr/local/bin/parallel。使用这条路径运行就可以了。
  2. 您可以为此添加别名~/.bashrc~/.zshrc文件,例如alias parallel='/usr/local/bin/parallel'

现在parallel像魅力一样工作。

dev-dsk % parallel --version         
GNU parallel 20190322
Copyright (C) 2007-2019 Ole Tange and Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
GNU parallel comes with no warranty.
于 2019-04-14T02:52:57.273 回答