GNU并行根本不工作
我一直在尝试使用GNU并行,但是我从来没有能够得到它的function!
例如,运行(在一个非空的目录!):
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 --version
报告版本,只发现:
警告:您正在使用–tollef。 如果事情正在运行,请使用–gnu。
我不清楚为什么这个标志是默认设置的。 不用说,使用--gnu
工作!
以为我会张贴这个保存一些小时的挫折和困惑。
编辑:要永久解决这个问题(至less在Ubuntu中),删除/etc/parallel/config
的--tollef
标志
根据你的操作系统,你应该检查你是否真的在运行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并行来获得你期望的function。
作为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上。