linux shell日期加减,[20190412]bash显示日期相减.txt

[20190412]bash显示日期相减.txt

--//别人的系统前一段时间大量出现log file switch (checkpoint incomplete),我想了解日志大概的切换情况.

--//结果对方数据库控制文件已经重建,无法通过一些视图了解具体情况.我想alert文件里面保存这些信息.

--//在自己的系统测试看看,如何获得日志切换的时间间隔.

1.过滤切换日志时的时间:

$ grep -B1 "(LGWR switch)" alert_hrp430.log  | grep "^... Apr 0[789].*2019$"

Sun Apr 07 01:11:04 2019

Sun Apr 07 10:54:46 2019

Sun Apr 07 19:00:34 2019

Mon Apr 08 01:11:04 2019

Mon Apr 08 08:29:24 2019

Mon Apr 08 11:05:25 2019

Mon Apr 08 18:06:26 2019

Tue Apr 09 01:11:04 2019

Tue Apr 09 08:00:42 2019

Tue Apr 09 08:57:09 2019

Tue Apr 09 10:01:06 2019

Tue Apr 09 11:31:46 2019

Tue Apr 09 15:50:09 2019

Tue Apr 09 17:49:43 2019

--//简单1点把这个结果导入数据库表中再计算容易许多.

2.转化为1970/1/1开始的秒数:

$ grep -B1 "(LGWR switch)" alert_hrp430.log  | grep "^... Apr 0[789].*2019$" | xargs -I{} date -d "{}" "+%s"

1554570664

1554605686

1554634834

1554657064

1554683364

1554692725

1554717986

1554743464

1554768042

1554771429

1554775266

1554780706

1554796209

1554803383

--//验证看看是否转化正确

$ date -d "1970-01-01 00:00:00 UTC 1554570664 seconds" +"%Y-%m-%d %T"

2019-04-07 01:11:04

3.如何实现上下相减呢?

$ grep -B1 "(LGWR switch)" alert_hrp430.log  | grep "^... Apr 0[789].*2019$" | xargs -I{} date -d "{}" "+%s" | awk 'NR==1{a=$1} NR>1{print $1-a;a=$1}'

35022

29148

22230

26300

9361

25261

25478

24578

3387

3837

5440

15503

7174

--//这样就能获得切换的时间(单位秒),验证看看.

SYS@hrp430> select (to_date('Apr 07 10:54:46 2019','MON DD HH24:MI:SS YYYY')-to_date('Apr 07 01:11:04 2019','MON DD HH24:MI:SS YYYY'))*86400 N10 from dual ;

N10

---------------------

35022

--//OK完全正确.再修改看看:

$ grep -B1 "(LGWR switch)" alert_hrp430.log  | grep "^... Apr 0[789].*2019$" | xargs -I{} date -d "{}" "+%Y-%m-%d:%T %s" |  awk 'NR==1 {a=$1;b=$2} NR>1 {print $1,"-",a,$2-b;a=$1;b=$2}'

2019-04-07:10:54:46 - 2019-04-07:01:11:04 35022

2019-04-07:19:00:34 - 2019-04-07:10:54:46 29148

2019-04-08:01:11:04 - 2019-04-07:19:00:34 22230

2019-04-08:08:29:24 - 2019-04-08:01:11:04 26300

2019-04-08:11:05:25 - 2019-04-08:08:29:24 9361

2019-04-08:18:06:26 - 2019-04-08:11:05:25 25261

2019-04-09:01:11:04 - 2019-04-08:18:06:26 25478

2019-04-09:08:00:42 - 2019-04-09:01:11:04 24578

2019-04-09:08:57:09 - 2019-04-09:08:00:42 3387

2019-04-09:10:01:06 - 2019-04-09:08:57:09 3837

2019-04-09:11:31:46 - 2019-04-09:10:01:06 5440

2019-04-09:15:50:09 - 2019-04-09:11:31:46 15503

2019-04-09:17:49:43 - 2019-04-09:15:50:09 7174

--//这样就比较好观察了.再贴一个我们生产系统30分钟定时切换的情况:

$ grep -B2 "(LGWR switch)" alert_fyhis1.log  | grep "^... Apr 12.*2019$" | xargs -I{} date -d "{}" "+%Y-%m-%d:%T %s" |  awk 'NR==1 {a=$1;b=$2} NR>1 {print $1,"-",a,$2-b;a=$1;b=$2}'

2019-04-12:00:31:22 - 2019-04-12:00:01:22 1800

2019-04-12:01:01:22 - 2019-04-12:00:31:22 1800

2019-04-12:01:13:44 - 2019-04-12:01:01:22 742      

2019-04-12:01:43:46 - 2019-04-12:01:13:44 1802

2019-04-12:02:13:47 - 2019-04-12:01:43:46 1801

2019-04-12:02:43:46 - 2019-04-12:02:13:47 1799

2019-04-12:03:13:49 - 2019-04-12:02:43:46 1803

2019-04-12:03:31:05 - 2019-04-12:03:13:49 1036

2019-04-12:04:01:13 - 2019-04-12:03:31:05 1808

2019-04-12:04:31:13 - 2019-04-12:04:01:13 1800

...

--//注这台机器没有使用实时传输日志,要修改参数为-B2,不然无法显示时间信息.

--

Fri Apr 12 08:31:16 2019

LGWR: Standby redo logfile selected for thread 1 sequence 45458 for destination LOG_ARCHIVE_DEST_2

Thread 1 advanced to log sequence 45458 (LGWR switch)

--

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值