For 루프를 사용한 Bash 병렬 작업

For Lupeuleul Sayonghan Bash Byeonglyeol Jag Eob



Linux에는 여러 명령 또는 Bash 스크립트를 병렬로 실행하는 여러 가지 방법이 있습니다. 방법 중 하나는 Bash 스크립트에서 'for' 루프를 사용하여 병렬 작업을 실행하는 것입니다. 이 루프는 'seq' 명령을 사용하여 병렬 작업을 실행하는 데 매우 유용합니다. 'for' 루프를 사용하여 병렬 작업을 실행하는 다양한 방법이 이 자습서에 나와 있습니다.

병렬 작업의 다양한 예

'for' 루프를 사용하여 병렬 작업을 실행하는 다양한 방법이 자습서의 이 부분에 표시됩니다.

예 1: 'For' 루프를 사용하여 병렬 작업 실행

'for' 루프를 사용하는 것이 Bash 스크립트에서 병렬 작업을 수행하는 더 간단한 방법입니다. 다음 스크립트로 'for' 루프를 10000번 실행하고 1000번 반복한 후 숫자를 출력하는 Bash 파일을 만듭니다. 이 작업은 'for' 루프를 사용하여 병렬로 수행됩니다.







#!/빈/배시

#10000에 도달할 때까지 루프 반복

~을 위한 ~에 ` 시퀀스 0 1000 10000 ` ;

하다

#1000번째 숫자마다 출력

에코 $값

완료

스크립트를 실행하면 다음 출력이 나타납니다. 출력에 인쇄되는 0에서 10000 사이의 10개의 숫자가 있습니다.

  p3

예 2: 중첩된 'For' 루프를 사용하여 병렬 작업 실행

'A'에서 'C'까지의 알파벳 문자와 1에서 3까지의 숫자를 사용하여 일련 번호를 생성하는 중첩된 'for' 루프를 실행하는 다음 스크립트를 사용하여 Bash 파일을 만듭니다. 외부 루프의 첫 번째 반복과 이후 내부 루프 “A1. 코드이그나이터”, “A2. 라라벨”, “A3. CakePHP”가 인쇄됩니다. 외부 루프의 두 번째 반복과 내부 루프의 반복 완료 후 “B1. 오라클”, “B2. MySQL”, “B3. SQL”이 인쇄됩니다. 외부 루프의 세 번째 반복과 내부 루프의 반복 완료 후 “C1. 씨에스에스”, “C2. JQuery”, “C3. JavaScript”가 인쇄됩니다.

#외부 루프

~을 위한 알파 ~에 { 교류 }

하다

#내부 루프

~을 위한 숫자 ~에 { 1 .. }

하다

# 조건에 따라 출력을 출력

만약에 [ $알파 == 'ㅏ' ] ; 그 다음에

배열 목록 = ( '코드이그나이터' '라라벨' '케이크PHP' )

엘리프 [ $알파 == '비' ] ; 그 다음에

배열 목록 = ( '신탁' 'MySQL' 'SQL' )

엘리프 [ $알파 == '씨' ] ; 그 다음에

배열 목록 = ( 'CSS' '제이쿼리' '자바스크립트' )

BE

에코 ' $알파 $번호 . ${arrayList[$number-1]} '

완료

완료

스크립트 실행 후 다음 출력이 나타납니다.

예 3: 'For' 루프 및 'Wait' 명령을 사용하여 병렬 작업 실행

'wait' 명령은 여러 작업이 실행 중일 때 하나의 작업이 작업을 완료하기를 기다리는 데 사용되는 Bash의 매우 유용한 명령입니다. 더 적은 수의 작업이 실행 중인 경우 'wait' 명령은 새 작업을 비동기적으로 시작합니다. 중첩된 'for' 루프 내에서 백그라운드 작업을 실행하는 다음 스크립트를 사용하여 Bash 파일을 만듭니다. 'wait' 명령은 모든 자식 프로세스가 완료될 때까지 기다리는 데 사용됩니다. 'date' 및 'sleep' 명령은 백그라운드 프로세스로 실행됩니다.

#외부 루프

~을 위한 ~에 { 1 .. 2 }

하다

#내부 루프

~을 위한 제이 ~에 { 1 .. }

하다

만약에 시험 ' $(작업 | wc -l) ' -ge 2 ; 그 다음에

기다리다 -N

BE

#백그라운드 프로세스

{

날짜

1

} &

완료

완료

스크립트를 실행하면 다음 출력이 나타납니다. 현재 날짜와 시간은 중첩된 'for' 루프를 2×3=6번 반복하기 위해 백그라운드 프로세스에서 6번 인쇄됩니다.

예 4: 순차 실행과 병렬 실행의 차이점

순차 실행과 병렬 실행의 차이점을 보여주는 다음 스크립트를 사용하여 Bash 파일을 만듭니다. prn_char() 함수는 0.5초 동안 5개의 문자를 인쇄하도록 스크립트에 정의되어 있습니다. 다음으로 첫 번째 'for' 루프는 prn_char() 함수를 순차적으로 실행하는 데 사용됩니다. 두 번째 'for' 루프는 prn_char() 함수를 병렬로 실행하는 데 사용됩니다.

#0.5초 동안 5자를 출력하는 함수 정의

prn_char ( ) {

~을 위한 ~에 안녕하세요; 하다

0.5 ;

에코 -N $c ;

완료

에코

}

# for 루프를 사용하여 함수를 순차적으로 실행

~을 위한 밖으로 ~에 { 1 .. } ; 하다

prn_char ' $아웃 '

완료

# for 루프를 사용하여 함수를 병렬로 실행

~을 위한 밖으로 ~에 { 1 .. } ; 하다

prn_char ' $아웃 ' &

완료


스크립트를 실행하면 다음 출력이 나타납니다. 순차 실행과 병렬 실행의 차이가 출력에 표시됩니다. 여기에서 prn_char() 함수의 'for' 루프의 모든 문자는 순차 실행에서 한 번에 인쇄되고 각 문자는 병렬 실행에서 세 번 인쇄됩니다.

  p4

결론

'for' 루프를 사용하여 병렬 작업을 실행하는 것은 많은 프로그래밍 목적에 필요합니다. 'for' 루프를 사용하여 병렬 작업을 실행하는 방법은 이 자습서에 나와 있습니다.