计算两个时间之间的时间差

计算两个时间之间的时间差

我在一个日志文件中记录了以下两次,该日志文件每 5 分钟检查一次反向 SSH 连接。如果连接断开,它会记录断开情况并继续每 5 分钟尝试重新连接一次。

我想计算这两个时间之间的差值。我假设这个过程是:

1)将它们转换为时间戳。

2) 用一个减去另一个。

3)显示结果。

BROKEN: Jun 29 16:15:01 IST 2017
RESTARTED: Jun 29 16:15:21 IST 2017

我如何将上述内容转换为所述时间戳?还是我以错误的方式看待这个问题?

答案1

基本使用方法date

从该行中提取日期:

$ sed -n '/BROKEN/ s/BROKEN: //p' file
Jun 29 16:15:01 IST 2017

转换为纪元时间

$ date -d "Jun 29 16:15:01 IST 2017" "+%s"
1498733101

重复并减去(这个日期格式有一些单词分割问题,所以我只是用命令替换了整个内容。也许有更简洁的方法):

$ BROKEN=$(date -d "$(sed -n '/BROKEN/ s/BROKEN: //p' file)" "+%s")
$ RESTARTED=$(date -d "$(sed -n '/RESTARTED/ s/RESTARTED: //p' file)" "+%s")
$ echo $((RESTARTED-BROKEN))
20

差异当然是在几秒钟内显现出来的......

相关内容