2012-08-15 98 views
4

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

我可以计算完成任务的时间减去开始它的时间with something like this但这需要在每个cron作业的Shell脚本上执行此操作。这并不一定困难,但看起来有点傻,cron不会以某种方式记录这一点,所以我试图找到一个更简单的方法:P

tl; dr找出时间cron作业从开始至结束

+0

很多服务的东西都是特定于版本的,尤其是'cron'。 14.04与16.04不同,14.04系统升级到16.04更像是14.04系统。除非明确说明正在讨论什么样的系统,否则很难回答这个问题。 – SDsolar 2017-10-21 06:30:31

回答

9

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

例如,如果您有:

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

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

添加time,你会得到一些输出,看起来像(“真实”是你想要的时间) :

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

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

+0

这看起来像会起作用!我的问题可能出于Linux/Shell /等的愚蠢的缺乏经验,但我需要了解更多的事情......因为这些任务在没有我创建它们的情况下运行(它们是我的机器上添加的默认任务/ etc/crontab),在哪里打印出来让我看看?这项工作会自动打开一个终端吗?谢谢:) – connergdavis 2012-08-15 17:55:18

+1

@connergdavis我喜欢说,通常cron实现会将从cron作业打印出来(stdout)的内容发送给root或某个管理员的电子邮件地址。如果你没有这样的设置,你可以尝试将输出管道输出到一个文件:'time /maint/run_webalizer.sh> /maint/webalizer_out' – 2012-08-15 17:59:07

+0

哦,好的,那太棒了。非常感谢你!:D – connergdavis 2012-08-15 17:59:39

1

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

+0

注意接受答案后的评论。 '&>'是捕获它的方式,就像它在终端窗口中运行一样。 – SDsolar 2017-10-21 06:55:22

0

Cronitor(https://cronitor.io)是一种工具,我建立正是为了这个目的。它使用http请求来记录作业的开始和结束。

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