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+=("$!")