실행 중인 셸 스크립트를 종료하고 그 안에서 실행 중인 모든 프로세스를 종료합니다.

실행 중인 셸 스크립트를 종료하고 그 안에서 실행 중인 모든 프로세스를 종료합니다.

5개의 다른 작업을 실행하는 셸 스크립트가 백그라운드에서 실행되고 있습니다.

쉘 스크립트를 실행하면 5개 작업이 모두 순차적으로 실행되기 시작합니다. 쉘을 종료하면 쉘을 종료하더라도 실행 중인 프로세스가 계속 실행됩니다.

$ bash shell.sh & echo $!

이는 쉘의 PID를 제공하므로 나중에 특정 시점에 쉘을 종료할 수 있습니다.

#!/bin/bash

JOB1
JOB2
JOB3
JOB4
JOB5

쉘이 종료되면 쉘에서 실행 중인 모든 프로세스를 종료하게 하려면 어떻게 해야 합니까?

답변1

#!/bin/bash
declare -a bgpids

cleanup() {
    for pid in "${bgpids[@]}"; do
        kill -9 "$pid"
    done
}
trap "cleanup" SIGINT SIGTERM

sometask &
bgpids+=("$!")

관련 정보