스크립트에서 병렬로 시작된 프로세스의 종료 코드 확인

스크립트에서 병렬로 시작된 프로세스의 종료 코드 확인

다음 bash 스크립트가 있다고 가정해 보겠습니다.

#!/usr/bin/env bash
process-1&
process-2&
process-3&

두 가지 질문이 있습니다.

  1. 모든 프로세스가 종료 코드 0으로 종료되었는지 스크립트 끝에서 어떻게 확인합니까?
  2. 시작된 모든 프로세스가 완료될 때까지 스크립트를 어떻게 "대기"한 다음 요약할 수 있습니까 echo(사용자에게 종료 코드를 알릴 수도 있음)?

답변1

bash 내장을 사용할 수 있습니다 wait.
3번 wait -n, 매번 종료 상태를 확인합니다.

~에서man bash:

    wait [-n] [n ...]
           Wait  for  each  specified child process and return its termination
           status.  Each n may be a process ID or a job  specification;  if  a
           job  spec is given, all processes in that job's pipeline are waited
           for.  If n is not given, all currently active child  processes  are
           waited  for,  and  the  return status is zero.  If the -n option is
           supplied, wait waits for any job to terminate and returns its  exit
           status.   If  n specifies a non-existent process or job, the return
           status is 127.  Otherwise, the return status is the exit status  of
           the last process or job waited for.

관련 정보