我一直试图使用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,但没有用。
答案 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没有被命令通过以下方式正确地解决了它:
代码:
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
错误。在我的路径中,只有一个并行的可执行二进制文件,但仍未检测到。
我能够按如下所示对其进行修复:
invalid option
。这给出了存在名为 parallel 的可执行文件的所有路径。就我而言,只有一条路径whereis parallel
。使用此路径运行就可以了。/usr/local/bin/parallel
或~/.bashrc
这样的文件中添加别名,例如~/.zshrc
现在alias parallel='/usr/local/bin/parallel'
就像魅力一样。
parallel