> 프로세스 관리 > wait

wait: 백그라운드 작업 완료 대기

wait 명령어는 지정된 백그라운드 작업(job)이나 프로세스(PID)가 종료될 때까지 기다리는 데 사용됩니다. 여러 작업을 동시에 실행한 후 모든 작업이 완료될 때까지 기다려야 하는 스크립트에서 특히 유용합니다.

개요

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를 담고 있는 특수 변수입니다.

동일 카테고리 명령어