다음과 같은 간단한 처리 대기열을 고려해보세요.
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
시작하는 것보다 더 많은 프로세스를 중지하고 있습니다.