개요
wait는 '기다리다'라는 의미 그대로, 셸 스크립트에서 백그라운드로 실행된 작업이 끝날 때까지 셸의 실행을 중단시킵니다. 일반적으로 `&` 기호를 사용해 여러 작업을 백그라운드에서 병렬로 실행한 후, 이 작업들이 모두 완료된 다음에야 다음 작업을 진행해야 할 때 사용됩니다. `wait`를 사용하면 스크립트가 백그라운드 프로세스의 종료 코드를 확인할 수 있어, 작업 성공 여부를 판단하는 데도 도움이 됩니다.
주요 특징
wait 명령어의 주요 특징은 다음과 같습니다.
- 특정 백그라운드 작업의 종료를 기다립니다.
- 작업 번호(job number)나 프로세스 ID(PID)를 인자로 지정할 수 있습니다.
- 인자 없이 실행하면 모든 백그라운드 작업이 종료될 때까지 기다립니다.
- 셸 스크립트에서 여러 병렬 작업을 동기화하는 데 유용합니다.
주요 옵션
wait 명령어는 인자로 작업 번호나 PID를 받으며, 옵션이 거의 없는 간단한 명령어입니다.
1) 실행 옵션
2) 도움말
생성된 명령어:
명령어를 조합해 보세요.
설명:
`wait` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
wait 명령어의 다양한 사용 예시를 통해 기능을 익혀보세요.
모든 백그라운드 작업 대기
sleep 5 &
sleep 10 &
jobs
wait
echo '모든 작업이 완료되었습니다.'
여러 개의 `sleep` 작업을 백그라운드에서 실행한 후, `wait` 명령어로 모든 작업이 끝날 때까지 기다립니다.
특정 작업 대기
sleep 10 &
sleep 5 &
jobs
wait %1
echo '1번 작업이 완료되었습니다.'
두 개의 작업 중 1번 작업이 끝날 때까지 기다립니다. `jobs` 명령으로 작업 번호를 확인하고 `wait %1`을 사용합니다.
프로세스 ID(PID)로 대기
sleep 10 &
PID=$!
echo "PID $PID 인 작업이 시작되었습니다."
wait $PID
echo "PID $PID 인 작업이 완료되었습니다."
스크립트에서 `$`를 사용하여 백그라운드 프로세스의 PID를 변수에 저장한 후, 해당 PID가 종료될 때까지 기다립니다.
설치
wait는 셸(bash, zsh 등)의 내장 명령어로, 별도의 설치가 필요하지 않습니다.
팁 & 주의사항
wait 명령어 사용 시 유의할 점들을 정리했습니다.
팁
wait는 백그라운드 프로세스가 종료될 때까지 셸의 실행을 멈춥니다. 만약 프로세스가 종료되지 않으면 셸은 계속 기다립니다.wait명령의 종료 상태 코드는 기다린 프로세스의 종료 상태 코드와 동일합니다. 이를 통해 작업의 성공 여부를 스크립트에서 확인할 수 있습니다.- 작업 번호(
%1)를 사용하려면jobs명령으로 현재 셸의 백그라운드 작업을 먼저 확인해야 합니다.$!는 가장 최근에 백그라운드로 실행된 프로세스의 PID를 담고 있는 특수 변수입니다.