단일 명령을 사용하여 여러 프로세스 생성

단일 명령을 사용하여 여러 프로세스 생성

단일 명령을 사용하여 프로세스의 인스턴스(예: yes) 10개를 생성하는 방법이 있습니까?

$instantiate 10 yes

답변1

다음과 같은 것이 괜찮을까요? 이는 bash(중괄호 확장용) 및 GNU 병렬성을 가정합니다.

parallel -N0 -j0 -u yes ::: {1..10}

-j0설정은 인수만큼 많은 프로세스가 시작되도록 하고, -u각 프로세스의 출력이 사용 가능한 즉시 인쇄되도록 (그룹 해제)이 있도록 하기 위한 것입니다(이는 yes출력이 무제한인 경우에 중요합니다). -N0매개변수가 명령줄에 삽입되는 것을 방지합니다.

답변2

@dhag 물론 한 줄의 답이 있지만 구문이 눈을 아프게 합니다. :)

단일 명령을 요청했고 쉘은 for-do-done을 단일(복합) 명령으로 간주하므로 더 읽기 쉬운 다음 버전이 합리적이라고 생각합니다.

for i in {1..10}; do yes &; done

일부 셸은 자동으로 nice(2)백그라운드 작업을 수행하므로 이것이 문제가 되는 경우 이것이 최선의 해결 방법은 아닙니다.

관련 정보