计算两次时间差

den*_*ski 2 command-line bash timestamp

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

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

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

2)从另一个中减去一个。

3) 显示结果。

BROKEN: Jun 29 16:15:01 IST 2017
RESTARTED: Jun 29 16:15:21 IST 2017
Run Code Online (Sandbox Code Playgroud)

如何将上述内容转换为上述时间戳?还是我看错了?

Zan*_*nna 6

基本使用方法date

从行中提取日期:

$ sed -n '/BROKEN/ s/BROKEN: //p' file
Jun 29 16:15:01 IST 2017
Run Code Online (Sandbox Code Playgroud)

转换为纪元时间

$ date -d "Jun 29 16:15:01 IST 2017" "+%s"
1498733101
Run Code Online (Sandbox Code Playgroud)

重复和减去(我在这种日期格式上遇到了一些分词问题,所以我只是对整个事情进行了命令替换。也许有更简洁的方法):

$ 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
Run Code Online (Sandbox Code Playgroud)

当然,差异会在几秒钟内显现出来......