Matar o processo após um determinado período de tempo?

Tenho um script que tenta fazer uma conexão com o banco de dados usando outro programa e o tempo limite (2,5 min) do programa é longo. Quero adicionar essa funcionalidade ao script.

Se demorar mais de 5 segundos para conectar, interrompa o processo
Altere o processo de suspensão / morte.

O problema que estou enfrentando é como o bash relata quando um processo é interrompido, porque os processos estão no mesmo shell apenas em segundo plano. Existe uma maneira melhor de fazer isso ou como posso silenciar o shell para os comandos kil

DB_CONNECTION_PROGRAM > $CONNECTFILE &
pid=$! 
(sleep 5; kill $pid) &
sleep_pid=$!
wait $pid

# If the DB failed to connect after 5 seconds and was killed
status=$? #Kill returns 128+n (fatal error)
if [ $status -gt 128 ]; then
    no_connection="ERROR: Timeout while trying to connect to $dbserver"
else # If it connected kill the sleep and any errors collect
    kill $sleep_pid
    no_connection=`sed -n '/^ERROR:/,$p' $CONNECTFILE`
fi

questionAnswers(4)

yourAnswerToTheQuestion