5

我正在做一个研究项目,需要我在 Ubuntu Linux 系统上监控 cron 作业。我收集了有关作业任务的数据,当它们开始时,我只是不知道有一种方法可以监控它们完成运行所需的时间。

我可以计算完成任务的时间减去以这样的方式启动它但这需要在每个 cron 作业的 Shell 脚本上执行此操作。无论如何这并不一定很困难,但是cron不会以某种方式记录这个似乎有点愚蠢,所以我试图找到一种更简单的方法:P

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

4

4 回答 4

12

你可以把它放在time你的 crontab 前面,如果你收到关于 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 通知,则可以将输出通过管道传输到文件。

于 2012-08-15T17:52:13.180 回答
1

man time. 也许您可以创建一个包装器并告诉 Cron 将其用作您的“外壳”或类似的东西。

于 2012-08-15T17:50:52.600 回答
0

我使用 Jenkins CI 通过它的 external-monitor-job 插件来做到这一点。Jenkins 可以跟踪开始和结束时间,跟踪一段时间内的整体执行时间,保存它跟踪的所有作业的输出,并以图形方式呈现成功/失败条件。

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

于 2015-01-30T23:24:29.820 回答
0

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

如果您的作业未按计划运行,或者运行时间过长/过短,您将收到通知。您还可以将其配置为通过电子邮件、短信以及 Slack、Hipchat、Pagerduty 等方式向您发送警报。

于 2016-12-29T16:50:06.933 回答