1월, 2019의 게시물 표시

Bash 에서 프로세스 기다리기

Bash에서 자식 프로세스가 끝날 때까지 기다릴 때는 wait을 사용한다.
$ 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…