我在做一个研究项目,要求我监视Ubuntu Linux系统上的cron作业。我收集了关于工作任务的数据,当他们开始工作时,我只是不知道监控工作完成的时间。cron作业:监视完成作业的时间
我可以计算完成任务的时间减去开始它的时间with something like this但这需要在每个cron作业的Shell脚本上执行此操作。这并不一定困难,但看起来有点傻,cron不会以某种方式记录这一点,所以我试图找到一个更简单的方法:P
tl; dr找出时间cron作业从开始至结束
我在做一个研究项目,要求我监视Ubuntu Linux系统上的cron作业。我收集了关于工作任务的数据,当他们开始工作时,我只是不知道监控工作完成的时间。cron作业:监视完成作业的时间
我可以计算完成任务的时间减去开始它的时间with something like this但这需要在每个cron作业的Shell脚本上执行此操作。这并不一定困难,但看起来有点傻,cron不会以某种方式记录这一点,所以我试图找到一个更简单的方法:P
tl; dr找出时间cron作业从开始至结束
您可以将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通知,则可以将输出传送到文件。
这看起来像会起作用!我的问题可能出于Linux/Shell /等的愚蠢的缺乏经验,但我需要了解更多的事情......因为这些任务在没有我创建它们的情况下运行(它们是我的机器上添加的默认任务/ etc/crontab),在哪里打印出来让我看看?这项工作会自动打开一个终端吗?谢谢:) – connergdavis 2012-08-15 17:55:18
@connergdavis我喜欢说,通常cron实现会将从cron作业打印出来(stdout)的内容发送给root或某个管理员的电子邮件地址。如果你没有这样的设置,你可以尝试将输出管道输出到一个文件:'time /maint/run_webalizer.sh> /maint/webalizer_out' – 2012-08-15 17:59:07
哦,好的,那太棒了。非常感谢你!:D – connergdavis 2012-08-15 17:59:39
man time
。也许你可以创建一个包装并告诉Cron使用它作为你的“外壳”或类似的东西。
注意接受答案后的评论。 '&>'是捕获它的方式,就像它在终端窗口中运行一样。 – SDsolar 2017-10-21 06:55:22
我使用Jenkins CI通过其外部监视器作业插件来完成此操作。詹金斯可以跟踪开始和结束时间,随时跟踪整体执行时间,保存所跟踪的所有作业的输出,并以图形方式呈现成功/失败情况。
https://wiki.jenkins-ci.org/display/JENKINS/Monitoring+external+jobs
Cronitor(https://cronitor.io)是一种工具,我建立正是为了这个目的。它使用http请求来记录作业的开始和结束。
如果您的工作没有按计划运行,或者运行时间太长/太短,您会收到通知。您还可以配置它通过电子邮件,短信,但还包括Slack,Hipchat,Pagerduty等发送警报。
很多服务的东西都是特定于版本的,尤其是'cron'。 14.04与16.04不同,14.04系统升级到16.04更像是14.04系统。除非明确说明正在讨论什么样的系统,否则很难回答这个问题。 – SDsolar 2017-10-21 06:30:31