Bash에서 자식 프로세스가 끝날 때까지 기다릴 때는 wait을 사용한다.
만약 기다려야할 프로세스가 여러개라면 for문을 이용해서 처리할 수 있다.
$ help wait
wait: wait [-n] [id ...]
Wait for job completion and return exit status.
Waits for each process identified by an ID, which may be a process ID or a
job specification, and reports its termination status. If ID is not
given, waits for all currently active child processes, and the return
status is zero. If ID is a a job specification, waits for all processes
in that job's pipeline.
If the -n option is supplied, waits for the next job to terminate and
returns its exit status.
Exit Status:
Returns the status of the last ID; fails if ID is invalid or an invalid
option is given.
만약 기다려야할 프로세스가 여러개라면 for문을 이용해서 처리할 수 있다.
#!/usr/bin/env bash
pids=""
for i in $(seq 1 5)
do
sleep 5 &
pids[$i]=$!
echo "pids[$i]="${pids[$i]}
done
echo "waiting..."
for i in ${pids[*]}
do
echo "waiting... $i"
wait $i
echo "done... $i"
done
댓글
댓글 쓰기