Peccato che in questa e in altre pagine elencate nei risultati di Google su come gestire i lavori cron appesi che nessuno menzioni mai pstree.
pstree
Guarda sotto la parte cron dell'albero
Penso che se è presente un wrapper di script di shell, dovrebbe scadere il cronjob, se è in esecuzione per periodi di tempo arbitrariamente abbastanza lunghi. Il wrapper dovrebbe inviare SIGHUP o SIGALARM quando si verifica il timeout dal periodo in cui viene richiamato il cronjob. Qualcosa del genere:
50 * * * * /usr/bin/my_cron_wrapper_timeout -t 1 /usr/bin/my_command_cron_job_to_run
Questo cron_wrapper_timeout dovrebbe fondamentalmente inviare il segnale di timeout una volta che l'opzione -t switch è trascorsa 1 ora e quindi dovrebbe inviare kill -HUP
segnalare al cronjob e quindi assicurarsi di raccogliere anche il processo e quindi terminare/uccidere se stesso.
In alternativa, il codice dovrebbe essere scritto all'interno del cronjob stesso per gestire il timeout del segnale ALARM e assicurarsi che venga ripulito prima che muoia delicatamente.
MODIFICA
Questo è esattamente ciò a cui mi riferivo:watchdog su http://chihungchan.blogspot.com/2011/03/no-more-hanging-jobs-in-cron.html
Dovresti interrompere il processo avviato dal crontab.
#kill -HUP PID (PID: Process ID is the process running)
Per vedere una relazione del PID con i processi in esecuzione (e maggiori informazioni) usa top
comando, cambia l'ordine delle colonne con i tasti <
e >
Prova anche ps -ax|grep [your_process_file]
che elenca i processi in esecuzione filtrati in base al nome scelto
-HUP =Riaggancia