2010-10-19 21 views
1

Nous avons récemment eu un problème où une tâche planifiée ColdFusion n'a pas repris après une mise à niveau de Windows et un redémarrage du serveur CF. Existe-t-il un moyen de surveiller l'intégrité des tâches planifiées et d'être averti si elles ne fonctionnent pas correctement? Ou aurais-je besoin d'écrire une tâche pour analyser les fichiers journaux pour cette information?Vérifier l'intégrité des tâches planifiées?

Répondre

4

Vous pouvez utiliser l'API pour obtenir des informations sur vos tâches planifiées. Ce qui suit renvoie un tableau de structures avec des informations sur chaque tâche planifiée. vous pouvez ensuite parcourir le tableau et regarder la variable last_run.

<cfset arySchedTasks = createobject("java","coldfusion.server.ServiceFactory").getCronService().listall() /> 
+0

Nous avons utilisé cette méthode et chaque tâche exécutée s'est connectée à une table de base de données. Nous avons donc été en mesure de concilier les moments où il était prévu de courir par rapport aux moments où ils ont effectivement couru. –

+0

Merci. J'ai écrit un script CF rapide avec ce code pour vérifier l'intégrité des tâches planifiées. En ce moment, il fonctionne comme une tâche planifiée, mais je pense que je vais le porter sur une tâche Windows. – stomcavage

0

Si vous voulez vérifier que les tâches planifiées travaillent au niveau le plus général, est une façon de planifier une tâche « rythme cardiaque », en cours d'exécution aussi souvent que vous le souhaitez. Définissez la tâche pour mettre à jour un compteur, modifier un horodatage, envoyer un e-mail, déclencher un SMS "Je suis en vie" tous les matins, ajouter une entrée de journal - tout ce qui est logique. Cela ne vous indiquera pas que toutes vos tâches sont en cours d'exécution, mais vous indiquera que le serveur est actif et que le système de tâches planifié lui-même fonctionne.

Une autre option consiste à canaliser vos tâches via un point d'entrée unique - une sorte de contrôleur frontal pour les tâches. Cela délègue l'installation et la configuration des tâches individuelles à votre code, plutôt qu'à l'administrateur des FC. Votre contrôleur de tâches maître inclut le code de déclenchement pour chaque tâche. Programmer le contrôleur à fonctionner aussi souvent que nécessaire - donc, une seule tâche, plutôt que plusieurs. Dans le contrôleur, quelque chose comme ça, peut-être tous les cinq minutes:

Check the time/date, compare against set of tasks 
If time (or frequency) is A, run tasks P,Q,R, log success/failure 
If time is B, run tasks S,T, log success/failure 
If time is C, run tasks U,V,X, log success/failure  
Send heartbeat with success/failure codes for all relevant tasks 

Un avantage de cette approche est que vous pouvez exprimer aller beaucoup plus riche/no-go flux de travail - ont des tâches exécutées à des fréquences semi-aléatoires, exécutez les tâches basées sur le succès ou l'échec d'autres tâches, etc. Si vous voyez/recevez l'indicateur de pulsation, vous savez que votre contrôleur de tâches a bien fonctionné.

0

Une autre option simple. Activez le fichier de sortie pour chaque tâche et vérifiez ces fichiers par un travail Cron indépendant: si le fichier a été modifié dans le délai requis, cela signifie que la tâche du planificateur a été exécutée.