Dommage que dans cette page et dans d'autres pages répertoriées dans les résultats de Google sur la façon de traiter les tâches cron bloquées que personne ne mentionne jamais pstree.
pstree
Regardez sous la partie cron de l'arborescence
Je pense que si un wrapper de script shell est présent, cela devrait expirer le cronjob, s'il s'exécute pendant une longue période arbitrairement assez longue. L'encapsuleur doit envoyer SIGHUP ou SIGALARM lorsque le délai d'attente se produit à partir de la période d'invocation de la tâche cron. Quelque chose comme ça :
50 * * * * /usr/bin/my_cron_wrapper_timeout -t 1 /usr/bin/my_command_cron_job_to_run
Ce cron_wrapper_timeout devrait essentiellement envoyer le signal de temporisation une fois que -t switch option 1 hour passe et devrait ensuite envoyer kill -HUP
signal au cronjob, puis assurez-vous de récolter également le processus, puis de se terminer / se tuer.
Ou bien, le code doit être écrit dans le cronjob lui-même pour gérer le délai d'attente du signal ALARM et s'assurer qu'il se nettoie avant de mourir doucement.
MODIFIER
C'est exactement ce à quoi je faisais référence :chien de garde sur http://chihungchan.blogspot.com/2011/03/no-more-hanging-jobs-in-cron.html
Vous devez arrêter le processus que la crontab a commencé à exécuter.
#kill -HUP PID (PID: Process ID is the process running)
Pour voir une relation du PID avec les processus en cours d'exécution (et plus d'informations), utilisez top
commande, changez l'ordre des colonnes avec les touches <
et >
Essayez également ps -ax|grep [your_process_file]
qui répertorie les processus en cours d'exécution filtrés par le nom que vous choisissez
-HUP =Raccrocher