wait
실행한 프로세스가 종료할 때까지 대기하는 명령어이다. 여러 작업을 동시에 실행할 때 모든 작업이 종료되기를 기다리거나, 특정 작업이 종료되는 것을 기다릴 때 사용한다.
백그라운드 작업 종료 대기
아래의 경우 command1, command2, command3이 모두 종료될 때까지 기다린 후, 모든 명령어가 실행이 종료되면 command4를 실행한다.
command1 &
command2 &
command3 &
wait
command4
특정 프로세스 종료 대기
특정 프로세스가 종료되기를 기다리고 싶다면 프로세스 ID(pid)를 전달하면 된다.
wait pid
# 예시
wait 100
내 경우에는, 특정 스크립트를 크론탭으로 주기적으로 실행하되 스크립트가 실행 중임을 나타내는 doing 파일이 있으면 실행을 안 하게끔 하고자 했다.
if [ ! -f "$doing_file" ]
then
touch "$doing_file"
cmd &
cmd &
wait
rm "$doing_file"
fi
근데 스크립트 내에서 실행한 명령어가 동작 중임에도 doing 파일이 삭제되는 경우가 있어 확인이 필요했다. 제대로 못 사용한 걸 수도🤔…….
참고 문서