2013-05-08 51 views
51

我一直在嘗試使用GNU並行一段時間,但我從來沒有能夠得到它的功能!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

「bash,zsh,tcsh,csh和s h「爲完整性+1) – 2014-12-22 15:55:47

回答

84

正當我完成寫這個問題,我跑parallel --version上報版本,才發現:

警告:您正在使用--tollef。如果事情正在運行,請使用--gnu。

我不清楚爲什麼該標誌是默認設置的。不用說,使用--gnu工作!

以爲我會張貼這個來節省一些小時的挫折和困惑。

編輯: 要永久解決這個問題(在Ubuntu至少),刪除--tollef標誌/etc/parallel/config

+18

--tollef將退役20140222 http://lists.gnu.org/archive/html/parallel/2013-02/msg00018.html如果您已經讓您的挫折感被分配維護者知道,這樣默認值就可以改變了。 – 2013-05-10 11:04:07

+0

@Thor「改善情況」是什麼意思?在改變默認行爲? – WaelJ 2013-05-10 12:27:49

+0

@ OleTange非常高興聽到! :) – WaelJ 2013-05-10 12:28:10

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來獲得你期望的功能。

1

有問題作爲FREEMAT的外部命令並行運行(MATLAB外觀);該argumentFile未供給到命令妥善解決它由:

  • 添加到--gnu選項
  • 不使用涉及[「] cmdString語法

代碼:

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

謝謝你:) Im在Ubuntu 12.04以及