cron作业:监视作业完成所需的时间

我正在做一个研究项目,要求我监视Ubuntu Linux系统上的cron作业。 我收集了关于工作任务的数据,当他们开始工作的时候,我只是不知道有什么方法可以监控工作完成的时间。

我可以计算完成任务的时间减去像这样的东西,但是这需要在每个cron作业的Shell脚本上做这件事。 这不是一定困难的,但看起来有点傻,cron不会以某种方式logging下来,所以我试图find一个更简单的方法:P

tl; dr计算出cron作业从开始到结束的时间

你可以把time放在你的crontabs前面,如果你得到有关cron脚本输出的通知,它会被发送给你。

例如,如果你有:

 0 1,13 * * * /maint/run_webalizer.sh 

在前面增加time

 0 1,13 * * * time /maint/run_webalizer.sh 

你会得到一些看起来像(真正的时间是你想要的)的输出:

 real 3m1.255s user 0m37.890s sys 0m3.492s 

如果您没有收到cron通知,则可以将输出传送到文件。

man time 。 也许你可以创建一个包装,并告诉Cron使用它作为你的“壳”或类似的东西。

我使用Jenkins CI来通过它的外部监视器作业插件来完成此操作。 Jenkins可以跟踪开始和结束时间,跟踪总体执行时间,保存跟踪的所有作业的输出,并以图形方式显示成功/失败情况。

https://wiki.jenkins-ci.org/display/JENKINS/Monitoring+external+jobs

Cronitor( https://cronitor.io )是我为此建立的工具。 它使用http请求来记录作业的开始和结束。

如果您的工作没有按计划运行,或者运行时间太长/太短,您将会收到通知。 您还可以配置它通过电子邮件,短信,但还包括松弛,Hipchat,Pagerduty和其他警报。