2013-06-05 2 views
1

나는 다양한/임의의 명령 (바이너리/실행 파일 및 인수가 다양 함)의 긴 목록을 제공하고 xargs가 이러한 명령을 병렬로 실행하도록하고 싶습니다 (xargs -P).여러 개의 임의의 명령을 병렬로 실행하기 위해 xargs를 사용할 수 있습니까?

다양한 인수 만 사용하는 경우 xargs -P fine을 사용할 수 있습니다. 내가 어려움을 겪고있는 실행 파일과 주장을 다양하게하고 싶을 때입니다.

예 : 명령 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 –

+0

에 GNU 병렬 (또는 다른 소프트웨어)을 복사 할 수있는 권한이 없습니다. 내가 현재 사용하고있는 네트워크. –

답변

3

병렬에 액세스 할 수없는 경우 매개 변수로 명령과 함께 sh를 사용하면됩니다. 예를 들어

:

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

쉬의 -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)과 (이 경우 COMMAND)을 검색하고 매개 변수를 교체를 알려줍니다 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. 

쉬 명령이 인용을 마크 (")를 포함하는 매우 관대 한 것 같다 그래서 당신은 탈출 인용으로 정규 표현식에 필요 나타나지 않습니다