AIX에서 xargs와 같은 "--max-procs"를 사용하여 대기열을 처리하는 방법은 무엇입니까?

AIX에서 xargs와 같은 "--max-procs"를 사용하여 대기열을 처리하는 방법은 무엇입니까?

다음과 같은 간단한 처리 대기열을 고려해보세요.

cat list.txt | xargs -n1 -P20 process.sh 

(-P 또는 --max-procs)

AIX에서 비슷한 것을 갖는 방법은 무엇입니까?

답변1

xargs를 ksh 스크립트로 대체하여 동일한 것을 시뮬레이션할 수 있습니다. 예를 들어:

#!/bin/ksh
nproc=0 max=20
trap 'let nproc--' sigchld
while read file
do    while [ $nproc -ge $max ]
      do sleep 1
      done
      process.sh "$file" &
      let nproc++
done
wait

쉘 변수는 nproc백그라운드에서 실행 중인 프로세스 수를 계산합니다. 프로세스가 끝나면 쉘은 SIGCLD 신호를 트랩하여 변수를 감소시킵니다. 수면 폴링 루프가 max시작하는 것보다 더 많은 프로세스를 중지하고 있습니다.

관련 정보