Ctrl+C를 사용하여 bash 스크립트에서 하위 프로세스를 중단합니다.

Ctrl+C를 사용하여 bash 스크립트에서 하위 프로세스를 중단합니다.

bash 스크립트에서 두 개의 하위 프로세스를 시작하고 다음 wait명령을 사용하여 두 하위 프로세스가 완료될 때까지 기다립니다.

./proc1 &
pid1=$!
echo "started proc1: ${pid1}"

./proc2 &
pid2=$!
echo "started proc2: ${pid2}"

echo -n "working..."
wait $pid1 $pid2
echo " done"

스크립트는 일반적인 상황에서 잘 작동합니다. 두 프로세스가 모두 완료되기를 기다리고 완료되면 종료됩니다. 하지만 때로는 이 스크립트를 중지해야 할 때도 있습니다(사용 Ctrl+C). 하지만 중지해도 하위 프로세스는 중단되지 않습니다. 메인 스크립트로 어떻게 완전히 죽일 수 있나요?

답변1

SIGINT(Ctrl+C)를 처리하도록 트랩을 설정합니다. 귀하의 경우 다음과 같습니다.

trap "kill -2 $pid1 $pid2" SIGINT

wait 명령 앞에 넣으면 됩니다.

관련 정보