Eu acho que se um empacotador de script de shell estiver por perto, ele deve expirar o cronjob, se ele estiver sendo executado por longos períodos de tempo arbitrariamente longos. O wrapper deve enviar o SIGHUP ou SIGALARM quando o tempo limite acontecer desde o período em que o cronjob é invocado. Algo parecido com isto:
50 * * * * /usr/bin/my_cron_wrapper_timeout -t 1 /usr/bin/my_command_cron_job_to_run
Este cron_wrapper_timeout deve basicamente enviar o sinal de timeout uma vez a opção -t da opção 1 hour passes e então deve enviar kill -HUP
signal para o cronjob e então certifique-se de aproveitar o processo também e então terminar / kill.
Ou, como alternativa, o código deve ser escrito no próprio cronjob para manipular o tempo limite do sinal ALARM e certificar-se de que ele seja limpo antes que ele morra suavemente.
EDITAR
Isso é exatamente o que eu estava me referindo: cão de guarda no link