2013-06-05 125 views
1

我想能夠提供一長串任意/不同的命令(不同的二進制文件/可執行文件和參數),並讓xargs並行運行這些命令(xargs -P)。可以使用xargs並行運行多個任意命令嗎?

當只有變量參數時,我可以使用xargs -P。這是當我想改變我有困難的可執行文件和參數。

例:命令LIST.TXT

% cat command-list.txt 
binary_1 arg_A arg_B arg_C 
binary_2 arg_D arg_E 
.... <lines deleted for brevity> 
binary_100 arg_AAA arg_BBB 

% xargs -a command-list.txt -P 4 -L 1 
** I know the above command will only echo my command-list.txt ** 

我知道GNU平行的,但只能使用xargs的現在。我也不能只是後臺所有的命令,因爲可能有太多的主機一次處理。

解決方案可能正在盯着我。提前致謝!

+0

是否有任何的原因因爲不使用http://oletange.blogspot.dk/2013/04/why-not-install-gnu-parallel.html上的GNU Parallel –

+0

我沒有權限將GNU Parallel(或其他軟件)複製到任何地方我目前使用的網絡。 –

回答

3

如果您沒有並行訪問權限,一種解決方案就是使用sh命令作爲參數。

例如:

xargs -a command-list.txt -P 4 -I COMMAND sh -c "COMMAND" 

在sh使用-c基本上只是執行給定的字符串(而不是尋找一個文件)。該名男子頁的解釋是:

-c string If the -c option is present, then commands are read from 
      string. If there are arguments after the string, they are 
      assigned to the positional parameters, starting with $0. 

而對於xargs的使用-I與當前告訴它一次運行一個命令(如-L 1)和(在這種情況下命令)來搜索和替換參數行正在被xargs處理。男人頁面信息如下:

-I replace-str 
      Replace occurrences of replace-str in the initial-arguments with 
      names read from standard input. Also, unquoted blanks do not 
      terminate input items; instead the separator is the newline 
      character. Implies -x and -L 1. 

SH似乎很寬容含引號(「)命令,這樣你就不會出現需要正則表達式他們進入逃脫報價

相關問題