wait — 자식 프로세스 종료 대기
Linux / 서비스 및 프로세스 관리 / wait.html
셸이 시작한 자식 프로세스가 끝날 때까지 기다리는 내장 명령.
기본 정보
| 명령어 이름 | wait |
|---|---|
| 한 줄 소개 | 셸이 시작한 자식 프로세스가 끝날 때까지 기다리는 내장 명령. |
| 제공 | Bash 및 POSIX 셸 내장 |
| 공식 문서 | https://www.gnu.org/software/bash/manual/html_node/Job-Control-Builtins.html |
| 지원 운영체제 | Linux, macOS, BSD |
| 설치 여부 | 기본 탑재 (셸 내장) |
| 분류 | 리눅스 서비스·프로세스 (태그: 프로세스·자원 관리 (태그: 작업 제어, 동기화, 스크립트)) |
이 명령어는 무엇인가?
wait는 백그라운드로 실행한 자식 프로세스가 끝날 때까지 스크립트 실행을 멈춥니다.
PID나 작업 번호를 지정하면 해당 대상만 기다리고, 종료 상태를 반환값으로 돌려줍니다.
어떤 문제를 해결하는가?
- 병렬 작업이 모두 끝난 뒤 다음 단계를 실행합니다.
- 백그라운드 작업의 종료 코드를 확인합니다.
- 임시 파일을 정리하기 전에 작업 완료를 보장합니다.
- 여러 서버에 동시에 명령을 보내고 결과를 모읍니다.
주요 기능
전체 대기
인자 없이 실행하면 모든 자식 프로세스를 기다립니다.
- 활용 상황: 병렬 작업을 모두 기다릴 때
- 얻는 결과: 모든 자식이 끝난 뒤 진행
- 제한 사항: 종료 코드는 마지막 대상 기준
특정 PID 대기
PID를 지정하면 그 프로세스만 기다립니다.
- 활용 상황: 특정 작업의 완료가 필요할 때
- 얻는 결과: 해당 프로세스의 종료 상태
- 제한 사항: 존재하지 않는 PID면 즉시 오류
종료 코드 수집
$?로 각 대기 대상의 결과를 확인합니다.
- 활용 상황: 실패를 구분해야 할 때
- 얻는 결과: 작업별 성공·실패 판단
- 제한 사항: 여러 개를 동시에 기다리면 마지막 값만 남음
설치 및 실행
설치 여부 확인
help wait
man bash # wait is a shell builtin
실제 사용 예제
모든 작업 대기
백그라운드 작업이 끝날 때까지 기다립니다.
# Wait for every background job
wait
PID 대기
특정 PID가 끝날 때까지 기다립니다.
# Wait for a specific child
bg_pid=$!
wait $bg_pid
병렬 작업 동기화
여러 작업을 띄우고 모두 기다립니다.
# Run three jobs in parallel, then wait
for h in web1 web2 web3; do ssh $h uptime & done
wait