GNU Parallel 대신 xargs 사용

GNU Parallel 대신 xargs 사용

GNU Parallel은 모든 입력 조합을 생성하고, 셸 기능을 복사하고, 출력을 혼합하지 않고 3개의 원격 서버에서 이를 실행할 수 있으며, 실패할 경우 명령을 다시 시도합니다.

#!/bin/bash

env_parallel --session
process_output() {
  perl -ne '$/=undef; $|=1; @a=split//;
      while(@a){
        print ".",shift @a;
        select($a,$a,$a,0.100);
      }';
}
env_parallel --retries 4 -Sserver{1..3},: \
  'echo X={1} Y={2} Z={3} | process_output' \
  ::: "a'  \"b"{1..3} ::: "c\"  'd"{3..4} ::: "e\$  f'"{7..8}

산출:

.X.=.a.'. . .".b.1. .Y.=.c.". . .'.d.3. .Z.=.e.$. . .f.'.7.
.X.=.a.'. . .".b.1. .Y.=.c.". . .'.d.3. .Z.=.e.$. . .f.'.8.
.X.=.a.'. . .".b.1. .Y.=.c.". . .'.d.4. .Z.=.e.$. . .f.'.7.
.X.=.a.'. . .".b.1. .Y.=.c.". . .'.d.4. .Z.=.e.$. . .f.'.8.
.X.=.a.'. . .".b.2. .Y.=.c.". . .'.d.3. .Z.=.e.$. . .f.'.7.
.X.=.a.'. . .".b.2. .Y.=.c.". . .'.d.3. .Z.=.e.$. . .f.'.8.
.X.=.a.'. . .".b.2. .Y.=.c.". . .'.d.4. .Z.=.e.$. . .f.'.7.
.X.=.a.'. . .".b.2. .Y.=.c.". . .'.d.4. .Z.=.e.$. . .f.'.8.
.X.=.a.'. . .".b.3. .Y.=.c.". . .'.d.3. .Z.=.e.$. . .f.'.7.
.X.=.a.'. . .".b.3. .Y.=.c.". . .'.d.3. .Z.=.e.$. . .f.'.8.
.X.=.a.'. . .".b.3. .Y.=.c.". . .'.d.4. .Z.=.e.$. . .f.'.7.
.X.=.a.'. . .".b.3. .Y.=.c.". . .'.d.4. .Z.=.e.$. . .f.'.8.

xargs -P$(nproc)각 프로세서는 하나의 작업을 실행할 수 있습니다.

주어진

  • 기능 process_output,
  • 실행할 서버(server1, server2, server3),
  • 매개변수 그룹( a' "b1, a' "b2, a' "b3; c" 'd1, c" 'd2, c" 'd3; e$ f'7, e$ f'8)

xargs동일한 작업을 수행하기 위해 GNU Parallel의 서버 에뮬레이션을 어떻게 사용할 수 있습니까 ?process_output

관련 정보