É possível chamar uma função no momento do encerramento de um script de shell? Tenho alguns processos daemon em execução em segundo plano, cujo ID de processo está armazenado em um array. No momento do encerramento (por qualquer motivo), quero que uma função/manipulador de limpeza seja chamado para encerrar todos os processos daemon.
# want the below function to be called when the shell script terminates for whatsoever reason
purge () {
for pid in ${pids[@]}; do
kill -9 $pid
done
}
./daemon1 > a.txt 2>&1 & pids+=($!)
./daemon2 > b.txt 2>&1 & pids+=($!)
./daemon3 > c.txt 2>&1 & pids+=($!)
for pid in ${pids[@]}; do
echo "process: $pid"
done
Você só precisa fazer:
De
man bash
cerca detrap
builtin:Verificar:
Com esta solução adequada, independentemente da saída, a função será executada.