Mate um script de shell em execução e mate todo o processo em execução nele

2

Eu tenho um script de shell em execução em segundo plano, que executa 5 tarefas diferentes.

Quando executo o script de shell, todas as 5 tarefas começam a ser executadas em ordem. Quando eu mato este shell, qualquer processo que esteja sendo executado, continuará a ser executado, mesmo que eu tenha matado o shell.

$ bash shell.sh & echo $!

isso me dá o PID do shell, o que me permite matá-lo mais tarde se eu quiser fazê-lo em algum momento.

#!/bin/bash

JOB1
JOB2
JOB3
JOB4
JOB5

Como posso fazer com que o shell mate todo o processo que está sendo executado, uma vez que tenha sido eliminado?

    
por user 04.02.2016 / 21:14

1 resposta

0

#!/bin/bash
declare -a bgpids

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

sometask &
bgpids+=("$!")
    
por 04.02.2016 / 21:20