두 개의 쉘 스크립트가 병렬로 실행되고 있다고 가정합니다.
드라이버.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