首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果日志文件有副本,则在日志文件中获取作业停机时间

如果日志文件有副本,则在日志文件中获取作业停机时间
EN

Stack Overflow用户
提问于 2013-05-10 09:15:52
回答 1查看 50关注 0票数 0

我试图找出如何确定某一特定作业(异常终止)的相应重新启动时间(作业最终完成之前的最后一次重新启动)。

例如:

  • 作业ABC 5:00播出。
  • 作业ABC 5:03
  • 5:05重新启动。
  • 作业ABC在5:08再次退席。
  • 它在5:10重新启动。
  • 作业ABC 5:15完成

在这个例子中,我可以有把握地假设作业ABC的完成时间是5:15。我试图计算Job的停机时间,方法是减去第一次重新启动的时间(5:10-5:03=7分钟停机时间)。

这是我为获得第一次故障和最后一次重新启动时间所做的工作:

代码语言:javascript
复制
grep abended logfile | head -1   #first failure
grep restarted logfile | tail -1 #last restart

但问题是,如果另一份工作ABC在6点开始运作,又会怎样呢?

算了吧,

  • 另一份工作ABC在6点开始运作。
  • 它在6点03分退场。
  • 6:05重新启动。
  • 作业ABC于6:07完成。

如果是这样的话,我就不能再使用我上面说过的头尾了。

如何判断6:05重新启动是否与另一项在6:03开始下降的作业ABC相对应?

顺便说一句,我正在尝试创建一个自动化工具,它将获得作业的停机时间,我唯一的参考是一个纯文本日志文件,它每24小时自动创建一次。

注意:我使用的是Bash脚本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-10 09:45:36

cat tmp.log

代码语言:javascript
复制
Job ABC ran at 5:00

Job ABC abended at 5:03

It was restarted at 5:05

Job ABC abended again at 5:08

I was restarted again at 5:10

Job ABC completed at 5:15

Another Job ABC ran at 6:00.

It abended at 6:03.

It was restarted at 6:05

Job ABC completed at 6:07.

代码语言:javascript
复制
 awk '{if(s==0 && /abended/){s = 1;st = $NF}}{if(s && /restarted/) {et = $NF}}1; /completed/{s=0;print "Downtime of this job was: "et "-" st}' tmp.log

这将提供以下输出:

代码语言:javascript
复制
Job ABC ran at 5:00

Job ABC abended at 5:03

It was restarted at 5:05

Job ABC abended again at 5:08

I was restarted again at 5:10

Job ABC completed at 5:15
Downtime of this job was: 5:10-5:03

Another Job ABC ran at 6:00.

It abended at 6:03.

It was restarted at 6:05

Job ABC completed at 6:07.
Downtime of this job was: 6:05-6:03.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16478855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档