동시에 실행되는 일부 명령을 실행한 후 bash 명령을 실행하시겠습니까?

동시에 실행되는 일부 명령을 실행한 후 bash 명령을 실행하시겠습니까?

일부 명령을 병렬로 실행하고 싶습니다. 이 명령이 모두 완료되면 다음 명령을 시작하십시오. 나는 다음이 효과가 있다고 생각합니다

#!/bin/bash
command1 &
command2 &
command3 &&
command4

그러나 그것은 진실이 아니다. command4완전히 완료된 후 처음 세 개의 명령을 실행 해야 합니다 .

답변1

#!/bin/bash
command1 &
command2 &
command3 &

wait
command4

wait(인수 없이) 모든 백그라운드 프로세스가 종료될 때까지 기다립니다.

wait설명서의 전체 설명 bash:

wait [-n] [n ...]

지정된 각 하위 프로세스를 기다리고 종료 상태를 반환합니다. 각각은 n프로세스 ID이거나 작업 사양일 수 있습니다. 작업 사양이 제공되면 작업 파이프라인의 모든 프로세스가 대기됩니다. 지정하지 않으면 n현재 활성화된 모든 하위 프로세스가 대기되고 반환 상태는 0입니다.-n이 옵션이 제공 되면 wait작업이 종료될 때까지 기다렸다가 종료 상태를 반환합니다. n존재하지 않는 프로세스나 작업을 지정 하면 반환 상태는 127입니다. 그렇지 않은 경우 반환 상태는 마지막 대기 프로세스 또는 작업의 종료 상태입니다.

답변2

나는 이 답변을 좋아 wait하지만 학문적 연습으로는 이것이 또한 효과가 있을 것이라고 생각합니다.

bash -c 'command1 & command2 & command3 &' && command4

내가 틀렸다면 정정해주세요.

관련 정보