Jobs em segundo plano do cron

1

Estou executando um cron a cada dois minutos. Do cron estou executando outros scripts de shell em segundo plano com "&". Depois que o cron sai, o processo de script shell gerado ainda é executado, isso é o comportamento desejado.

Mas isso leva a qualquer processo de zumbi quando o script filho sai. Preciso considerar algum caso especial?

    
por Poorna 30.12.2011 / 10:15

1 resposta

2

provavelmente (eu devo verificar para ter certeza) mas em qualquer caso você pode armazenar os PIDs dos processos bifurcados e matá-los na saída:

my_forked_process & my_forked_pid=$!

desde que você disse "outros shells" eu diria que há alguns, então devemos usar um array:

my_forked_pids=()
my_forked_process1 & my_forked_pids+=($!)
my_forked_process2 & my_forked_pids+=($!)

então você os mata assim ao sair:

for pid in "${my_forked_pids[@]}"; do
    kill "$pid"
done

[bônus] se você colocar o anterior em uma função, você pode definir um trap para executá-lo quando o script sair, independentemente do momento (segurança para quando ele é eliminado prematuramente):

trap cleanup_function 0

0 é um sinal especial que significa "na saída"

    
por 30.12.2011 / 23:05

Tags