GNU并行完全没有工作

时间:2013-05-08 19:39:43

标签: parallel-processing gnu xargs gnu-parallel

我一直试图使用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 个答案:

答案 0 :(得分:86)

当我即将完成这个问题时,我跑parallel --version报告版本,但却发现:

  

警告:您正在使用--tollef。如果有人在做什么 - 韦鲁。

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

以为我会发布这个以节省数小时的挫折和困惑。

修改 要永久修复此问题(至少在Ubuntu中),请删除--tollef

中的/etc/parallel/config标记

答案 1 :(得分:8)

根据您的操作系统,您应该检查您是否实际运行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就像这样,你需要manually install GNU parallel来获得你期望的功能。

答案 2 :(得分: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上。

答案 3 :(得分:0)

对我来说,这是相同的问题,但问题不同。只是运行putchar()命令正在静默退出。 parallel也在说parallel --version错误。在我的路径中,只有一个并行的可执行二进制文件,但仍未检测到。

我能够按如下所示对其进行修复

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

现在alias parallel='/usr/local/bin/parallel'就像魅力一样。

parallel