我正在做一个研究项目,需要我在Ubuntu Linux系统上监控cron作业。我收集了有关作业任务的数据以及它们何时启动,我只是不知道如何监控它们完成运行需要多长时间。
我可以计算完成任务的时间减去启动它with something like this,但这需要在每个cron作业的Shell脚本上执行此操作。无论如何这并不一定是困难的,但是cron似乎不会以某种方式记录这一点,所以我试图找到一种更简单的方法:P
tl; dr计算从开始到结束的时间cron作业
答案 0 :(得分:9)
您可以将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通知,则只需将输出通道传输到文件即可。
答案 1 :(得分:1)
man time
。也许你可以创建一个包装器并告诉Cron将它用作你的“shell”或类似的东西。
答案 2 :(得分:0)
我使用Jenkins CI通过其external-monitor-job插件执行此操作。 Jenkins可以跟踪开始和结束时间,跟踪整个执行时间,保存所跟踪的所有作业的输出,并以图形方式显示成功/失败条件。
https://wiki.jenkins-ci.org/display/JENKINS/Monitoring+external+jobs
答案 3 :(得分:0)
Cronitor(https://cronitor.io)是我为此目的而构建的工具。它使用http请求记录作业的开始和结束。
如果您的工作没有按计划运行,或者运行时间太长/太短,您将收到通知。您还可以将其配置为通过电子邮件,短信,还有Slack,Hipchat,Pagerduty和其他人发送警报。