GNU parallel完全无法工作

59

我一直在尝试使用 GNU parallel,但一直无法让它正常工作!

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

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个回答

91

当我即将完成撰写这个问题时,我运行了parallel --version 命令来报告版本,结果发现:

警告:您正在使用 --tollef 标志。如果出现异常情况,请使用 --gnu。

我不清楚为什么默认设置了该标志。不用说,使用--gnu命令可以解决问题!

我想发布这篇文章是为了节省某人几个小时的挫败感和困惑。

编辑: 要永久解决此问题(至少在Ubuntu操作系统中),请删除/etc/parallel/config文件中的--tollef标志。


22
--tollef将于20140222退役http://lists.gnu.org/archive/html/parallel/2013-02/msg00018.html如果您已经让您的发行版维护者知道您的挫败感,那么更改默认设置将会很有帮助。 - Ole Tange
1
这个问题让我很头疼。我正在运行Ubuntu,而Ubuntu默认会对每个人执行此操作。请参见Launchpad问题此处 - Alexander Garden
2
只是让大家知道,@OleTange(上面的第一条评论)是Parallel的作者! - Elijah Lynn
1
@ElijahLynn 当你能够自己实现它们时,预测事情变得更加容易。 - Ole Tange
2
问题确实存在,而且在 Fedora 20 中也可以解决这个问题。直到现在,我一直无法弄清楚这个问题,这使我无法使用“parallel”! - alfC
显示剩余3条评论

18

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

5
我正在使用Debian 10,这个问题仍然存在。您必须手动安装Parallel,但在此之前,Parallel链接到一些无用的命令,什么都不做。 - UTF_or_Death

1

在FREEMAT(类似于MATLAB的软件)中运行并行作为外部命令时遇到问题;参数文件没有正确传递给命令,解决方法如下:

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

代码:

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

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

0

对我来说,问题相同但不同。只是运行 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.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接