如何设置系统告诉我cron作业是否运行不正常?

时间:2010-08-10 05:56:37

标签: cron task scheduled-tasks

这更像是“一般架构”问题。如果你有一个定期运行的cron作业(甚至是一个Windows预定任务),它会让你发送一封好的电子邮件/短信,但如何让我得到通知不行吗?基本上,如果作业没有在预定的时间运行,或者Windows / linux有自己的一组挂断,阻止任务运行......?

只是寻找那些曾经遇到过这种情况并想出有趣解决方案的人的想法......

1 个答案:

答案 0 :(得分:0)

我过去所做的一种方法就是简单地放在每个脚本的顶部(比如checkUsers.sh):

touch /tmp/lastrun/checkUsers.sh

然后让另一个定期运行的作业使用find来查找tmp/lastrun中超过一天的所有“标记”文件。

您可以使用/tmp/lastrun/hour/tmp/lastrun/day/来分隔具有不同日程的作业。

请注意,这不会捕获从不运行的脚本,因为它们永远不会为find创建初始文件。为了减轻这种情况,您可以:

  • 在创建cron作业时手动创建该文件(不会处理有人无意中删除了标记文件的情况);或
  • 在某处维护所需标记文件的列表,以便您可以检测它们何时丢失以及过期。

并且,如果您的cron作业不是脚本,请将touch直接放入crontab

0 4 * * * ( touch /tmp/lastrun/daily/checkUsers ; /usr/bin/checkUsers )

验证简单的find脚本比验证每个cron个工作要容易得多。