Evitar que crianças sejam paradas pelo SIGTERM

1

Eu escrevi este script (removi algumas coisas inúteis):

#!/bin/bash

readonly ARGS="$@"

catch() {
    echo "Sigterm caught"
    # Perform some cleanup instructions
    # that suppose the child process is still alive
    trap - SIGTERM # remove the trap
    kill -s SIGINT -- -$$ # Sends SIGINT to child/sub processes
    exit 0
}

main() {

    trap "catch $5 $4" SIGTERM

    ./child_process_program # With all arguments needed

}

main $ARGS

Eu inicio este script com o script da seguinte forma: timeout "10s" ./my_script <arguments> .

O problema é que o sigterm atinge também o child_process_program e, portanto, as instruções que supõem que o processo filho ainda está ativo não podem ser bem-sucedidas.

Já vejo uma questão muito com resposta e tentou (sem sucesso) para mudar principal como segue:

main() {

    trap "catch $5 $4" SIGTERM
    set -m
     ./child_process_program & # With all arguments needed

}

Mas eu não consegui. Existe uma solução para o meu problema?

    
por Briomkez 05.06.2018 / 23:19

0 respostas

Tags