【问题标题】:GNU parallel not working at allGNU并行根本不工作
【发布时间】:2013-05-03 04:02:12
【问题描述】:

一段时间以来,我一直在尝试使用 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,但无济于事。

【问题讨论】:

    标签: parallel-processing gnu xargs gnu-parallel


    【解决方案1】:

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

    我能够按如下方式修复它

    1. 运行whereis parallel。这给出了存在名为 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.
    

    【讨论】:

      【解决方案2】:

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

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

      代码:

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

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

      【讨论】:

        【解决方案3】:

        根据您的操作系统,您应该检查您是否实际运行的是 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 才能获得你期望的功能。

        【讨论】:

        • 我正在使用 Debian 10,这仍然是个问题。你必须手动安装并行,但直到你这样做 parallel 链接到一些无用的命令,什么都不做
        【解决方案4】:

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

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

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

        我想我会发布这个来为某人节省数小时的挫败感和困惑。

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

        【讨论】:

        • --tollef 将被淘汰 20140222 lists.gnu.org/archive/html/parallel/2013-02/msg00018.html 如果您现在已经让您的发行版维护者知道您的挫败感,这样可以更改默认值,这将很有帮助。
        • 这让我很难受。我正在运行 Ubuntu,而 Ubuntu 默认对所有人执行此操作。请参阅启动板问题here
        • 大家都知道,@OleTange(上面的第 1 条评论)是 Parallel 的作者!
        • @ElijahLynn 它让预测事情变得更加容易,因为您可以自己实现。
        • 问题存在,这也解决了 Fedora 20 中的问题。无法弄清楚这一点阻止了我直到现在才使用parallel
        猜你喜欢
        • 2017-05-27
        • 1970-01-01
        • 2020-04-14
        • 2016-10-29
        • 2018-02-10
        • 2017-03-19
        • 2013-09-20
        • 2013-11-08
        • 2015-08-23
        相关资源
        最近更新 更多