GNU 병렬 대체 작업

GNU 병렬 대체 작업

서로 다른 매개변수를 사용하여 교대로 실행될 두 개의 명령을 지정하는 작업을 실행하고 싶습니다. 예를 들어:

1. exec --foo $inputfile1 $inputfile.outfile1
2. exec --bar $inputfile2 $inputfile.outfile2
3. exec --foo $inputfile3 $inputfile.outfile3
4. exec --bar $inputfile4 $inputfile.outfile4

두 개의 병렬 명령을 지정하거나 두 개의 입력을 지정하면 문제가 해결될 수 있지만 좀 더 일반적인 것이 필요합니다. 파일은 파이프라인 "find" 명령을 사용하여 지정됩니다.

편집: 내 작업 명령 중 하나는 다음과 같습니다.

find . -name 'somefiles*' -print0 | parallel -0 -j10 --verbose 'exec --foo {} {.}.outfile' 

두 명령을 교대로 수행하는 방법을 모르겠습니다.

따라서 기본적으로 Parallel-j10에서 수행해야 할 작업은 파일 세트에서 foo 매개변수를 사용하여 5개의 명령을 실행하고 bar 매개변수를 사용하여 그 중 5개를 실행하는 것입니다. 교대하지 않고 벗어날 수도 있지만 정확히 5/5 분할로 병렬화하여 더 많은 foos나 막대로 끝나지 않도록 하고 싶습니다.

답변1

먼저 모든 매개변수를 파일에 넣은 다음 사용할 수 있습니다.

parallel -a filename command

예를 들어:

echo "--fullscreen $(find /tmp -name *MAY*.pdf) $(find /tmp -name *MAY*.pdf).out" >> /tmp/a 
echo "--page-label=3 $(find /tmp -name *MAY*.pdf) $(find /tmp -name *JUNE*.pdf).out" >> /tmp/a 
echo "--fullscreen $(find /tmp -name *MAY*.pdf) $(find /tmp -name *JULY*.pdf).out" >> /tmp/a 

그런 다음 다음 명령을 실행합니다.

parallel -a /tmp/a evince

답변2

exec --foo $inputfile1 $inputfile.outfile1 & \
exec --bar $inputfile2 $inputfile.outfile2 & \
exec --foo $inputfile3 $inputfile.outfile3 & \
exec --bar $inputfile4 $inputfile.outfile4 &

답변3

이는 --foo와 다음을 번갈아가며 수행 해야 합니다 --bar.

find . -name 'somefiles*' -print0 |
  parallel -0 -j10 --verbose 'exec {= $_=seq() % 2 ? "--foo" : "--bar" =} {} {.}.outfile' 

관련 정보