첫 번째 프로세스가 종료되면 두 번째(병렬) 프로세스도 종료합니다.

첫 번째 프로세스가 종료되면 두 번째(병렬) 프로세스도 종료합니다.

두 개의 쉘 스크립트가 병렬로 실행되고 있다고 가정해 보겠습니다.

드라이버.sh:

./proc1.sh&
./proc2.sh&

다른 프로세스가 0이 아닌 코드로 종료된 경우 어떻게 프로세스를 종료할 수 있나요? (driver.sh 종료)

답변1

GNU Parallel을 사용하면 다음과 같습니다:

parallel --halt now,fail=1 ::: script1.sh script2.sh

답변2

상태 변경 시 다른 프로세스를 제어하기 위한 위더 프로세스 내부 로직이 없으면 PID를 사용하여 이를 추적/제어해야 합니다.

#!/bin/bash
./proc1.sh &
pid_1=$!  ## PID of proc1.sh

./proc2.sh &
pid_2=$!  ## PID of proc2.sh

while ps -p ${pid_1} &>/dev/null; do :; done ##Checking for existence of proc1.sh
kill ${pid_2}  ## Killing proc2.sh when proc1.sh is not running anymore

관련 정보