Unix에서 백그라운드 프로세스 수를 제한하는 방법

Unix에서 백그라운드 프로세스 수를 제한하는 방법

언제든지 10개의 부분만 병렬로 실행되도록 하면서 100개의 부분으로 스크립트를 실행해야 합니다.

아래 스크립트는 100개의 프로세스를 모두 동시에 트리거합니다.

for i in {1..100}
do
    nohup ksh my_background_script.ksh -mod ${i} &
done

답변1

xargsGNU에는 일반적으로 사용되는 두 가지 도구가 있습니다 parallel.

  1. xargs이전 버전이며 일반적으로 기본적으로 설치되지만 더 제한적입니다. 다음과 같이 사용할 수 있습니다.

     seq 1 100 | xargs -P 10 -I {} nohup ksh my_background_script.ksh -mod {} &
    

    -P 1010개의 프로세스를 병렬로 실행하도록 지시 합니다.

  2. GNU는 parallel많은 시스템에 기본적으로 설치되지는 않지만 모든 GNU/Linux 시스템에서 쉽게 사용할 수 있어야 하며 다음과 같이 xargs사용할 수 있습니다(세부 사항은 실행 중인 항목에 따라 다름).

     parallel -j 10 nohup ksh my_background_script.ksh -mod ::: {1..100}
    

두 프로그램 및 각각의 용도에 대한 자세한 내용은 여기에서 확인할 수 있습니다.GNU 병렬 대 &(배경을 의미함) 대 xargs -P

관련 정보