我在一个日志文件中记录了以下两次,该日志文件每 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
差异当然是在几秒钟内显现出来的......