Linuxpia/Linux 명령어

[리눅스 명령어] 프로세스 기다리기, wait

Linuxpia4U 2024. 2. 15. 03:34
반응형

프로세스 기다리기, wait

wait 명령어는 리눅스 및 유닉스 시스템에서 하나 이상의 백그라운드 프로세스가 종료될 때까지 현재 쉘 스크립트나 쉘 명령어의 실행을 일시 정지시키는 데 사용됩니다. 이 명령어는 스크립트 내에서 비동기적으로 실행된 프로세스들의 완료를 기다리고, 그 결과에 따라 다음 작업을 진행하기 위해 사용됩니다.

사용법

wait [PID...]
  • [PID...]는 대기할 하나 이상의 프로세스 ID입니다. PID를 지정하지 않으면 wait 명령어는 현재 쉘 스크립트의 모든 자식 프로세스가 종료될 때까지 기다립니다.

예시

  1. 특정 PID가 종료될 때까지 대기:
sleep 30 &
# Sleep 프로세스의 PID를 얻습니다.
PID=$!
wait $PID
echo "Sleep 프로세스가 완료되었습니다."
  1. 모든 백그라운드 프로세스가 종료될 때까지 대기:
sleep 30 &
sleep 45 &
# 모든 백그라운드 프로세스가 완료될 때까지 기다립니다.
wait
echo "모든 백그라운드 프로세스가 완료되었습니다."

사례


사용자가 터미널에서 sleep 30 & 명령어를 실행한 것을 보여줍니다. sleep 명령어는 시스템에게 지정된 시간(이 경우에는 30초) 동안 아무것도 하지 않고 기다리라고 지시합니다. & 기호는 명령어를 백그라운드에서 실행하라는 것을 의미합니다. 명령어가 백그라운드에서 실행되고 있음을 알려주는 작업 번호 [2]와 프로세스 ID 10075가 표시되어 있습니다.

이 상황에서 wait 명령어를 사용하여 sleep 명령어가 완료될 때까지 기다릴 수 있습니다. 예를 들어, 사용자가 wait 10075를 실행하면, 해당 sleep 명령어의 프로세스가 종료될 때까지 쉘은 다른 입력을 받지 않고 대기 상태에 있게 됩니다. 30초 후, sleep 프로세스가 완료되면 쉘은 다시 사용자의 입력을 받을 준비가 됩니다.

주의사항

  • wait 명령어는 현재 쉘 세션에서 시작된 자식 프로세스에만 적용됩니다.
  • 이 명령어는 주로 쉘 스크립트 내에서 사용되며, 비동기 프로세스들의 실행 완료를 동기적으로 처리해야 할 때 유용합니다.

정리

  • wait 명령어는 하나 이상의 백그라운드 프로세스가 종료될 때까지 쉘 스크립트의 실행을 일시 정지시킵니다.
  • 특정 PID를 지정하거나, 모든 자식 프로세스의 종료를 기다릴 수 있습니다.
  • 스크립트에서 비동기 작업의 완료를 동기적으로 관리할 필요가 있을 때 사용됩니다.
반응형